scieee Science in your language
[en] (orig)

Operativni sustavi i računalne mreže - Linux u primjeni

Author: Horvat, Hrvoje
Publisher: Zenodo
DOI: 10.5281/zenodo.17550143
Source: https://zenodo.org/records/17550143/files/Operativni%20sustavi%20i%20ra%C4%8Dunalne%20mre%C5%BEe%20-%20Linux%20u%20primjeni.pdf
Ova inačica knjige je revidirano izdanje knjige : Operativni sustavi i računalne mreže - Linux u primjeni
ISBN broja: 978-953-59438-9-1 .

Operativni sustavi i računal ne mreže : Linux u prim jeni – revidirano i zdanje

Tehnički recenzenti (po abecednom redu) :
• teh. Alikavazović Bojan , s enior konzultant za računalnu sigurnost, Cisco : CCNA/CCNP, Offensive Sec urity : OSCP/OSC
• ing.el. Buljubašić Tomi slav , softverski inže njer
• teh. Crnković Saša , i nženjer računalnih mreža i susta va
• mag.ing.comp Gregurić Ivan , inženjer računalnih m reža i sustava
• doc.dr.sc. Jakopec T omislav - Filozofski fakultet Osi jek
• dipl.ing.el. Ljubojević Saš a, inženjer računalnih mreža i sustava
• bacc.ing.comp. Markanović Tomislav , računalni pr ogramer
• prof.dr.sc. Martinović Gor an - Fakultet elektrotehnike, računarstva i informaci jskih tehnologija
• doc.dr.sc. Pejić Petra , ma g.ing.comp - Fakultet elektrotehnike, računarst va i informacijskih tehnol ogija
• dipl.ing.el. Ragić Igor , inže njer računalnih sustava i mreža
• dipl.ing.el. Skokić Darko , pr ogramer embedded sustava
• dipl.ing.el. Stipičević Tonči , inženjer računalnih m reža i sustava
• mag.ing.geod. et geoinf. Stoj nović Vedran , geo informatča r i administrator računal nih sustava
• univ.bacc.ing.c omp. Varga Hrvoje , računalni pr ogramer

Drugi suradnici: (po abecednom redu) : Bahes Boris, Bakša Saša Stjepan, B artolović Lukas, Bašić Asmir, Bradarić Demis,
Bradarić Kristijan, B rkić Valent , Colić Denis, Čagalj Ivan, Gotić Matej, Horvat Marina, Horvat Sandra, Josipović Iwan,
Jukić Dinko, Komar Boris, Kovačević Karlo, Lacković Marija, Maković Tomislav, Mamula Stanko, Markotić Marin,
Muhar Vanda, Olrom Zvonimir, Papić Kreš imir, Petrović Saša, Poslon Miroslav , Trivunović Nenad, Tuco Ferhad ,
Zušćak Domagoj .

Naslov : Operativni sustavi i računalne mrež e : Linux u primjeni
Licenca i prava k orištenja : Creative commons Attribution-ShareAlike 4.0 International license (CC BY-SA 4.0)

Na stražnjim koricama se nalaze registrirani zašti tni znakovi: Linuxa [pingvin Tux] , Gnome i KDE sučelja te prog rama:
GIMP, openLDAP,OpenSS H, OpenSNMP, OpenBGP, Open NTPD, PHP, Wordpres s, FileZilla, Python, Inkscape, MariaDB, Scri bus, Git,
Joomla, Squid proxy, Apache Tomcat , Apache web server, Apache Cass andra, LibreSSL, SAMBA, Open VPN, C ouchDB, PostgreSQL,
Redmine, Jenkins, Pos tfix, Magento, ClamAV, Suricata IPS/IDS, Mercurial, Libre Offi ce, Amarok Audio, VLC Med ia player, Wiresh ark,
Mozilla Thunderbird, Mozilla Firefo x, Gerrit, Proxmox VE, Blender, BIND DNS , dnsmasq, V IM , G NU PG (GPG), Drup al, OpenvSwitch,
Couch DB, OpenZFS, Unbo und, Icinga, Open NMS, nmap , HandBrake, Emacs i GNU projekta.

Navedeni zaštitni znako vi registrirani su od strane open source : udrug a, udruženja, tvrtki, zaklada i drugi h pripadajućih interesnih
skupina , čija autorska prav a su definirana u licencama za svaki od pojed inih navedenih programa i sustava.

Ilustracije su napravljene u programima otv orenog koda : Inkscape i GIMP te Google Dr awings.
Grafikoni i dijagr ami rađeni su u: PlantU ML , Google Drawings , Inkscape te LibreOff ice
Autori ilustracija i fotografija: Hrvoje Horvat i drugi autori (navedeni uz fotogra fiju ili ilustraciju ).
Broj riječi u knjiz i: 756651
Broj stranica knjig e: 1493
Broj ilustracij a i slika u knjizi : 393
Broj Linux nar edbi i programa koji se spomi nju u knjizi: 414
Broj izvora inform acija korištenih u knjizi : 2. 70 4.
Radna inačica publik acije : 2.6.171.
Autor : Hrvoje Horvat
Naklada : vlastita naklada
Tisak: elektroničko izda nje ( PDF )
Grafičko oblikovanje naslovnice: Ana Horvat
Mjesto i godin a izdavanja: Osijek, studenog 2025. godine .
Izdavač: Hrvoje Hor vat
ISBN : 978 – 953 – 59438 – 2 – 2
DOI: 10.5281/zenodo.17550143

Najnovija inačica knjige je dostupna na poveznici : htt ps://doi.org/10 .5281/zenodo.81193 10

I

II

Sadržaj
1. Licenca i predgovor ................................................................................................... 0
1.1. O autoru i recenzentima ................................................................................................... 2
O autoru ........................................................................................................................................ 2
Zahvala .......................................................................................................................................... 3
O recenzentima ............................................................................................................................. 3
1.2. Predgovor ........................................................................................................................ 4
2. Uvod ......................................................................................................................... 5
2.1. Na kojoj distribuciji Linuxa ćemo raditi ? .......................................................................... 6
2.2. Koje su prednosti Linuxa i drugih susta va otvorenog koda ................................................ 7
Slobodne i otvorene licence ( Free and Open Source Software - FOSS) ....................................... 12
2.3. Tko sve koristi Linux i sustave otvorenog koda ............................................................... 14
2.4. Tko još (pametan) razvija programe i sustave otvorenog koda ....................................... 16
2.5. Filmovi i literatura koju preporučujem o ......................................................................... 20
2.6. Zašto Unix odnosno Linux ............................................................................................... 21
Povijest Unixa ............................................................................................................................. 21
2.7. Povijest otvorenog koda ( Open Sourcea) i Linuxa ........................................................... 24
Što je operativni sustav ............................................................................................................... 29
3. Upoznajmo se s Linuxom ........................................................................................ 32
3.1. Unix/Linux ljuska (Shell) i terminali ................................................................................ 32
Prijavljivanje n a sustav ................................................................................................................ 34
Osnove rada ljuske (shella ) ......................................................................................................... 34
Rad s korisničkim račun om ......................................................................................................... 35
Osnovne kontrolne naredbe ....................................................................................................... 35
Bash ljuska detaljnije .................................................................................................................. 36
Pseudonimi naredbi ( Aliasi ) ................................................................ ........................................ 38
Pamćenje izvršenih nar edbi ( history) .......................................................................................... 38
3.2. Tko je sve logiran na sustav i što radi ? ........................................................................... 38
Naredba who .............................................................................................................................. 39
Naredba w ................................................................................................................................... 39
Naredba last ................................................................................................................................ 40
3.3. Osnovna komunikacija između korisni ka ........................................................................ 40
Naredba write ............................................................................................................................. 40
Naredba wall ............................................................................................................................... 41
3.4. Saznajmo nešto više o Linuxu i Linux n aredbama ............................................................ 41
Naredba man .............................................................................................................................. 41
Naredbe whatis i apropos ........................................................................................................... 42
Osnovne naredbe veza ne uz operativni sustav i kompo nente računala .................................... 43
4. Datotečni sustav (File System) ................................................................................ 46
4.1. Struktura datoteka i direktorija ( map a ) .......................................................................... 50
4.2. Direktoriji (mape) i datoteke .......................................................................................... 53

III

Putanje do datoteka i P ATH varijabla ......................................................................................... 55
4.3. Ovlasti ( permissions & modes ) ........................................................................................ 56
Što nam govore ovlasti ............................................................................................................... 57
4.4. Rad s direktorijima i datotekama detaljnije .................................................................... 63
Ovlasti kod kreir anja nove datoteke ili direkt orija i naredba umask .......................................... 63
Napredne ovlasti (atributi) te naredbe lsattr i chattr ................................................................ . 66
To nije sve: mogućnosti izv ršavanja datoteka i programa ( capabilities ) .................................... 67
Niti to nije sve - Access control list (ACL) ................................................................................... 68
4.5. Datotečni sustav detaljnije ................................................................ ............................. 70
Hard Linkovi ................................................................................................................................ 73
Soft linkovi .................................................................................................................................. 74
Oznake vreme na ( timestamps ) ................................ ................................................................... 75
Opisnici datoteke ( File deskriptori) ................................ ............................................................. 77
File deskriptori detaljnije ................................................................ ............................................ 78
4.5.5.1. File deskriptori i naredba lsof ................................................................................................ . 80
4.5.5.2. File deskriptori i veza s inode- om ........................................................................................... 82
Ograničenja sustava i nared ba ulimit .......................................................................................... 84
4.5.6.1. Ograničavanje File deskriptora ............................................................................................... 84
4.5.6.2. Ograničenja procesa ............................................................................................................... 85
4.5.6.3. Ulimit - dru ga ograničenja ...................................................................................................... 86
Datoteka limits .conf i druga ograniče nja sustava ............................................................. 86
Naredba sysctl ............................................................................................................................. 88
Naredba fuser ............................................................................................................................. 89
4.6. Prorijeđene ( Sparse ) datotek e ........................................................................................ 91
4.7. Format datoteka ( MIME type ) ........................................................................................ 94
CSV format datoteka ................................................................ ................................................... 95
5. Osnove rada u Linuxu ............................................................................................. 97
5.1. Rad s nekim od osnovnih Linux/Unix naredbi ................................................................ . 97
5.2. Naredbe za rad s direktorijima i datotek ama .................................................................. 98
Naredbe: cd , ls , pwd , mkdir , cp, mv i rmdir ................................................................................ 98
5.3. Kreiranje datoteka ....................................................................................................... 101
Napredno kreiranje i brisanje (sadržaja) datoteka ................................................................... 102
5.4. Naredbe za izlistanje sadržaja datotek a ........................................................................ 104
5.5. Rad s datotekama ........................................................................................................ 105
5.6. Uređivač teksta vi ......................................................................................................... 107
5.7. Rad sa sadržajem datoteka ........................................................................................... 109
Naredba grep ............................................................................................................................ 110
Naredba cut .............................................................................................................................. 112
Naredba awk ............................................................................................................................. 113
5.7.3.1. Awk print nare dba ................................................................................................................ 113
5.7.3.2. Awk varijable ................................................................ ........................................................ 114
5.7.3.3. Awk funkcije i for petlje ........................................................................................................ 115
5.7.3.4. Awk uvjeti ............................................................................................................................. 116
5.7.3.5. Awk polja ( Arr ay ) .................................................................................................................. 117
5.7.3.6. Awk pretraživanje ................................................................................................................. 118

IV

5.7.3.7. Awk aritmetič ke operacije i operatori .................................................................................. 118
Naredba sed .............................................................................................................................. 119
5.7.4.1. Sed zamjena stri ngova .......................................................................................................... 119
5.7.4.2. Sed brisanje st ringova ........................................................................................................... 120
Naredba tr ................................................................................................................................ . 121
Naredbe join i paste .................................................................................................................. 124
Sortiranje sadržaja: nared ba sort .............................................................................................. 128
5.8. Usporedba sadržaja datoteka ....................................................................................... 129
5.9. Traženje datoteka ........................................................................................................ 131
Naredba whereis ....................................................................................................................... 131
Naredba which .......................................................................................................................... 132
Naredbe locate i updatedb ....................................................................................................... 132
Naredba find ............................................................................................................................. 133
Naredba xargs i ogra ničenje duljine argumenata ..................................................................... 135
5.10. Preusmjeravanje ( redirek cija ) i Pipe funkcionalnost .................................................. 137
Preusmjeravanje ( re direkcija ) ................................................................................................... 138
Pipe funkcionalnost za povezivanje naredbi ............................................................................. 139
5.11. Meta znakovi ............................................................................................................ 140
Značenje nekih meta z nakova ................................................................................................... 140
5.12. Regularni izrazi ......................................................................................................... 140
Regularni izrazi i meta znakovi ................................ .................................................................. 143
5.12.1.1. Upotreba meta zna ka za komentar # ............................................................................... 143
5.12.1.2. Upotreba navodnika ‘ “ ` (jednostruki, dvostruki i jed nostruki kosi) ......................... 143
5.12.1.3. Upotreba ugla tih [ ] zagrada ............................................................................................ 144
5.12.1.4. Upotreba vitič astih { } zagrada ......................................................................................... 147
5.12.1.4.1. Posebne varija ble bash ljuske ...................................................................................... 148
Drugi napredni pri mjeri upotrebe bash ljusk e .......................................................................... 148
6. Shell skripte ........................................................................................................... 150
6.1. Kako rade Shell skripte ................................................................................................ . 150
6.2. Varijable ....................................................................................................................... 153
Standardne odnosno obič ne varijable ...................................................................................... 153
Sistemske ( Envir onment ) varijable i postavke terminala .......................................................... 154
6.2.2.1. Posebne siste mske varijable ................................................................................................ . 158
6.2.2.2. Ugrađene, posebne var ijable ljuske ..................................................................................... 159
Varijable polja ( Arra y variable ) ................................................................................................ . 159
6.2.3.1. Brisanje polja i li elemenata polja ......................................................................................... 160
Operacije nad vari jablama ................................................................ ........................................ 160
6.2.4.1. Rad s uzorcima od vrijednosti var ijable ................................................................................ 160
6.2.4.2. Izvlačenja dijel a vrijednosti varijable .................................................................................... 161
6.3. Parametri pozicije ........................................................................................................ 161
6.4. Upotreba okruglih zagrada ( ) ....................................................................................... 162
Jednostruke okrugle zagra de .................................................................................................... 162
Dvostruke okrugle za grade (()) ................................................................................................ . 163
Redirekcija (preusm jeravanje) i okrugle zagr ade ...................................................................... 164
6.5. Uvjeti ........................................................................................................................... 164
6.6. Petlje ........................................................................................................................... 166

XI

13.11. RAID polja diskova .................................................................................................... 654
Hardverski RAI D .................................................................................................................... 655
13.11.1.1. Pogled na nižu r azinu diska .............................................................................................. 657
13.11.1.2. Softverski RAI D ................................................................................................................. 658
13.11.1.3. Koja su najčešć a RAID polja u upotrebi i koje su im prednosti i mane? ........................... 658
13.11.1.4. Standardna RAID polja ..................................................................................................... 659
13.11.1.4.1. RAID 0 ........................................................................................................................ 659
13.11.1.4.2. RAID 1 ........................................................................................................................ 660
13.11.1.4.3. RAID 5 ........................................................................................................................ 660
13.11.1.4.4. RAID 6 ........................................................................................................................ 662
13.11.1.5. Ugniježđena R AID polja .................................................................................................... 663
13.11.1.5.1. RAID 0+1 .................................................................................................................... 663
13.11.1.5.2. RAID 10 ...................................................................................................................... 664
Softverski RAID (L VM2) ......................................................................................................... 665
13.11.2.1. Kreiranje LVM polja .......................................................................................................... 667
13.11.2.2. Kreiranje LVM Physical Storage Device a .......................................................................... 668
13.11.2.3. Kreiranje LVM Volume grupe ................................ ........................................................... 669
13.11.2.4. Formatiranje LVM polja ................................................................................................... 672
13.11.2.5. Proširi vanje kapaciteta LVM polja .................................................................................... 674
13.11.2.6. Brisanje LVM p olja ........................................................................................................... 676
13.11.2.7. LVM thin ........................................................................................................................... 676
Device Mapper (DM) i md (RAID) ................................ ......................................................... 678
13.11.3.1. Device Map per Multipath (Multipath I/O) ....................................................................... 680
Lažni (Fake/BIOS/Firmw are) RAID ........................................................................................ 683
13.12. NAS/SAN sustavi i druge tehnologije ........................................................................ 685
Storage Area Netw ork (SAN) ................................................................................................ 693
13.12.1.1. iSCSI .................................................................................................................................. 695
13.12.1.2. Fibre Channel ( FC) ............................................................................................................ 699
13.12.1.3. Usporedba SA N sustava: iSCSI vs. Fibre C hannel (FC) ...................................................... 709
14. Diskovni (I/O) podsustav ....................................................................................... 710
14.1. Diskovni ulazno/izlazni sustav ( I/O ) .......................................................................... 710
Sinkroni i asinkroni I/O .............................................................................................................. 716
Optimizacija Page C ache sloja .................................................................................................. 718
Optimizacija Filesystem sloja ................................................................ .................................... 721
Optimizacija Generic Blo ck Layera i I/O Sche dulera .................................................................. 722
14.1.4.1. Nove tehnologije na donjim slojevima I/O podsustava ................................................... 724
14.1.4.2. Nove tehnologije (nast avak) ................................ ............................................................ 727
Diskovni I/O sustav: primjeri ..................................................................................................... 730
14.1.5.1. Ograničenje diskov nih (I/O) performansi pro grama/procesa .......................................... 731
14.2. Praćenje performansi I/O sustava ............................................................................. 732
Još detaljnije praćenje I/O sustava ........................................................................................... 737
15. Analiza rada linux sustava i programa ................................................................... 741
15.1. Linux perf naredba ................................................................................................... 741
perf stat ..................................................................................................................................... 743
perf record ................................................................................................................................ 744
perf top ..................................................................................................................................... 747
perf i detaljnija analiza programskog koda ............................................................................... 747
15.2. Linux strace naredba ................................................................................................ 748

XII

15.3. Linux ltrace naredba ................................................................................................ . 750
15.4. Linux dstat naredba .................................................................................................. 750
16. Kernel Dump/Crashdump/core dump .................................................................... 752
16.1. Kako to radi .............................................................................................................. 752
16.2. Koji je proces pokretanja .......................................................................................... 752
16.3. Kernel učitava kernel ................................................................................................ 753
16.4. NMI ( Non-Maskable Interrup ts ) stanja ..................................................................... 754
17. Log datoteke ......................................................................................................... 755
17.1. Servis logrotate ........................................................................................................ 759
17.2. Datoteka /var/log/messa ges ........................................................................... 760
17.3. Datoteka /var/log/dmesg .................................................................................. 760
Kratka analiza problema na sustavu ......................................................................................... 762
SOS reporting ............................................................................................................................ 765
17.4. Datoteka /var/loge/secu re .............................................................................. 767
17.5. Journald, journalctl i dnevničke (l og) datoteke ......................................................... 768
18. X Window sustav ................................................................................................... 770
19. Mrežni sustav ........................................................................................................ 774
19.1. Topologija mreže ...................................................................................................... 775
Detaljnije o topologijama mr eže ............................................................................................... 776
19.2. Mrežni pojmovi ........................................................................................................ 782
Kablovi i konektori ................................................................ .................................................... 782
19.2.1.1. Bakar ................................................................................................................................ 782
19.2.1.2. Optika ............................................................................................................................... 788
19.2.1.2.1. Utikači i utičnice za optička vlakna .............................................................................. 793
19.2.1.2.2. Fiber to the Home (FTTH) ............................................................................................ 797
Mrežne kartice .......................................................................................................................... 802
19.2.2.1. Logička shema mre žne kartice ......................................................................................... 804
19.2.2.2. Small Form-factor (SFF) i Small Form-factor Pluggable (SFP) ........................................... 808
19.2.2.3. MDI i MDI-X ...................................................................................................................... 812
Brzina mreže ............................................................................................................................. 813
19.2.3.1. Širina komunik acijskog pojasa ( bandwidth ) ..................................................................... 813
19.2.3.2. Propusnost (throughput ) .................................................................................................. 813
19.3. CSMA/CD i nasljeđe prošlosti ................................................................................... 815
Što su MAC adres e .................................................................................................................... 816
19.4. Mrežni most i preklopnik ( Bridg e i switch ) ................................................................ 817
Metode preklapanja pa keta: cut-through i store and forwa rd ................................................. 818
19.5. Duplex ...................................................................................................................... 819
Half Duplex ................................................................................................................................ 819
Full Duplex ................................................................................................................................ 819
19.6. Auto Negotiation ................................................................ ...................................... 820
Konfiguracija brzine te duplex i auto negotiation način a rada ................................................. 821

XIII

19.7. Latencija odnosno kašnjenje ..................................................................................... 822
19.8. OSI model i TCP/IP model ......................................................................................... 824
TCP/UDP Portovi ....................................................................................................................... 825
Ugnježđivanje (Enkaps ulacija) .................................................................................................. 827
20. Kako radi mreža na OSI sloju 2 .............................................................................. 829
20.1. Oblik mrežnih okvira na O SI slojevima 2 i 1 ............................................................... 829
20.2. Usmjerivači koji rade na slojevima 3 i 4 te Mu ltilayer preklopnici ............................. 832
Dizajn preklopnika .................................................................................................................... 834
20.3. Ne blokirajući i blokirajući dizajn prekl opnika ........................................................... 836
20.4. Gbps i Mpps – u čemu je veza ................................................................................... 839
Mjerenja propusnosti be z ASIC sklopova .................................................................................. 845
Mjerenje propusnosti sa ASIC sklopovima ................................................................................ 847
20.5. Kontrola protoka ( flow co ntrol ) na OSI sloju 2 .......................................................... 849
20.6. Mrežna sučelja na OSI sloju 2 .................................................................................... 851
Mrežni most ( bridge ) odnos no premosnik ............................................................................... 851
20.6.1.1. Privremena konfigura cija bridge mrežnih su čelja ............................................................ 853
20.6.1.2. Trajna (permanentna) konfiguracija bridge mrežnih sučelja ........................................... 857
20.6.1.3. Bridge sučelje i VLAN fil triranje ........................................................................................ 858
VLANovi odnosno virtualne l okalne mreže ............................................................................... 861
20.6.2.1. Što se događa kod upotre be VLANova ............................................................................. 862
20.6.2.2. Format 802.1Q polja ........................................................................................................ 864
20.6.2.3. Rad s VLANovi ma pod Linuxom ........................................................................................ 865
20.6.2.4. Automatska propagacija VLANova ................................................................................... 869
TUN i TAP - posebna mrež na sučelja ........................................................................................ 870
VETH - posebno mrežno s učelje ............................................................................................... 871
Redundancija i Spannin g Tree protokol (STP) ........................................................................... 874
Redundancija i bon ding ( Agregacija/Etherchannel/T eaming ) .................................................. 876
20.6.6.1. Vrste bonding a i načini njegovog rada ............................................................................. 877
20.6.6.2. Konfiguracija bonding a u Linuxu ...................................................................................... 878
20.6.6.3. IEEE 802.3ad ( 802.1 AX -2008) odnosno LACP protokol .................................................... 882
Link Layer Discove ry Protocol (LLDP) ................................ ........................................................ 886
Pregled mrežnih su čelja ............................................................................................................ 888
20.7. ARP protokol ............................................................................................................ 889
20.7.1.1. Izgled ARP paketa ............................................................................................................. 890
20.7.1.2. Rad s ARP prot okolom ...................................................................................................... 891
20.7.1.3. Scenarij za prisilno osv ježavanje ARP tablice ( Gratuitous ARP ) detaljnije ....................... 894
20.7.1.4. Proxy ARP i druge opcije .................................................................................................. 896
20.7.1.5. ARP Flux (nepredvi divi ARP odgovori) ................................ .............................................. 899
21. IP adrese i usmjeravanje ........................................................................................ 902
21.1. Klase IP adresa ......................................................................................................... 902
21.2. Mreže ................................................................ ....................................................... 903
21.3. Maska mreža ( Netmask ) ................................................................ ........................... 904
Podmreže ( Subnets ) .................................................................................................................. 908
Nadmreže ( Supernet ting ) .......................................................................................................... 912
21.4. Usmjeravanje ( Routing ) ............................................................................................ 913

XIV

Distance vector protokoli .......................................................................................................... 915
Link-state protokoli ................................................................................................................... 915
Upotreba protokola za umjer avanje pod Linuxom ................................................................... 916
22. Metode komunikacije ............................................................................................ 918
22.1. Unicast ..................................................................................................................... 918
22.2. Broadcast ................................................................................................................. 919
22.3. Multicast .................................................................................................................. 919
Oblik multicast poruk e (paketa) ............................................................................................... 921
Kako to izgleda u praksi ............................................................................................................ 922
Multicast u upotrebi ................................................................ ................................................. 925
22.4. Anycast komunikacija ............................................................................................... 929
23. Internet (IP) sloj (OSI 3) .......................................................................................... 931
23.1. Oblik IP poruke (paketa) ........................................................................................... 932
Osiguranje kvali tete ( QoS ) i klasifikacija prometa ( ToS i DSCP ) ................................................ 936
23.2. IP fragmentacija ....................................................................................................... 939
Optimizacije v ezane za fragmentaciju i MTU ................................ ............................................ 943
23.2.1.1. Path MTU Discove ry ......................................................................................................... 944
23.3. Kako radi mreža (OSI 2 + OS I 3) ................................................................................. 947
23.4. Usmjerivači ( routeri ) i OSI slojevi 3 i 4 ....................................................................... 948
Time to live ( TTL ) ....................................................................................................................... 949
Maximum Transmi ssion Unit ( MTU ) ......................................................................................... 950
23.4.2.1. MTU primjeri .................................................................................................................... 952
Veliki mrežni okvi ri ( Jumbo frames ) .......................................................................................... 954
Translacija adresa ( NAT ) ................................................................ ........................................... 957
23.4.4.1. Source NAT (SNAT) ........................................................................................................... 958
23.4.4.2. Destination NA T (DNAT) ................................................................................................... 961
Redundancija na OSI sloj u tri (OSI 3) i VRRP protokol .............................................................. 963
23.4.5.1. Keepalived i ba lansiranje opterećenja ( Load Balan cing ) ................................................. 966
23.4.5.2. Oblik VRRP poruke (paketa) ............................................................................................. 967
23.4.5.3. Balansiranje o pterećenja ( Load Balancing ) – ručni rad ................................................... 968
23.4.5.4. Algoritmi za balansi ranje opterećenja (Load Bal ancing) .................................................. 969
24. Transportni protokoli (OSI sloj 4) ................................ ........................................... 971
24.1. UDP .......................................................................................................................... 973
Oblik UDP poruke (pake ta) ....................................................................................................... 974
24.2. TCP ........................................................................................................................... 976
Maximum segment si ze ( MSS ) .................................................................................................. 979
Kako se uspostavlja TCP v eza .................................................................................................... 981
Sigurnosni aspekt uspostavl janja TCP veze ( SYN ) ..................................................................... 984
Trajanje TCP veze ...................................................................................................................... 987
Standardne potvr de ( ACK ) ........................................................................................................ 992
Selektivne potvr de ( SACK ) ........................................................................................................ 993
TCP mehanizmi ......................................................................................................................... 996
24.2.7.1. Vrijeme prolaska pa keta ( Round-Trip Time ) ..................................................................... 996
Kontrola protoka ( TCP Wind ow i Window scaling ) ................................................................... 997
24.2.8.1. Veza između la tencije, propusnosti i TCP Window size parame tra ............................... 1001

XV

24.2.8.2. Skaliranje TCP prozora ( Window Scaling ) ...................................................................... 1002
Nadzor zagušenja ( Con gestion control ) ................................ .................................................. 1005
24.2.9.1. Usporeni početak i izbj egavanje zagušenja ................................ .................................... 1014
24.2.9.2. Brzo slanje (fast retran smit) i brzi oporavak ( fast recovery) .......................................... 1016
24.2.9.3. Explicit Congestion No tification ( ECN ) ................................ ........................................... 1017
TCP Push ( PSH ) i Urgent ( UR G ) ................................ ........................................................... 1017
24.2.10.1. Urgent ( URG ) .................................................................................................................. 1018
24.2.10.2. Push ( PSH ) ...................................................................................................................... 1018
Kako se zatvara TCP v eza .................................................................................................... 1019
TCP reset ............................................................................................................................. 1021
Mehanizam TCP retransm isije ............................................................................................ 1024
Primitak paketa izv an redoslijeda slanja ( Out- Of -Order ) .................................................... 1026
TCP keepalives ................................................................ .................................................... 1029
Stanja TCP veze i nje na vremenska ograni čenja (timeri) .................................................... 1032
24.2.16.1. Timeri i stanja veze ......................................................................................................... 1034
24.2.16.2. Maximum Seg ment Lifetime (MSL) ................................ ................................................ 1036
Uzroci odbacivanja TCP vez a .............................................................................................. 1037
25. Mreža u Linuxu .................................................................................................... 1039
25.1. Linux mrežni model ................................................................................................ 1039
Raspodjeljivanje mr ežnih paketa ( network queuing/s cheduler ) ............................................. 1041
Optimizacija TX međumem orije ( txqueue len ) mrežnog sučelja ....................................... 1045
Prstenasta međumem orija ( Ring buffer ) [ TX Ring i RX Ring ] .................................................. 1046
25.1.3.1. NAPI i Pooling ................................................................................................................. 1050
Mehanizmi za raspodjelu ( queuing ) mrežnih paketa .............................................................. 1052
25.1.4.1. Bufferbloat ..................................................................................................................... 1055
25.1.4.2. Oblikovanje m režnog prometa i naredba tc ................................................................ . 1056
25.2. Dodatne mogućnosti linuxa .................................................................................... 1060
Receive Side Scali ng ( RSS ) ....................................................................................................... 1060
Multiqueue funkcio nalnost ..................................................................................................... 1063
25.2.2.1. Multiqueue i vi rtualizacija .............................................................................................. 1069
Receive packet steering (RPS), Recei ve flow steering (RFS) i Tr ansmit Packet Steering (XP S) 1070
25.3. Statistike, analiza i praćenje mrežnih p aketa .......................................................... 1074
25.4. Koje još mrežne tehnologij e i protokoli postoje ? ................................................... 1080
25.5. Hardverski ubrzane mrežne funkc ionalnosti ........................................................... 1081
Large receive o ffload ( LRO ) i Generic re ceive offload ( GRO ) .................................................. 1081
LSO, TSO i GSO ........................................................................................................................ 1083
Checksum offload ................................................................................................................... 1084
Scatter-gather ......................................................................................................................... 1085
Pregled navedenih dos tupnih tehnika, tehnologija i pro tokola ............................................. 1086
Optimizacije m režnih sučelja propusnosti ve će od 10Gbps ................................................... 1088
25.6. Osnovna konfiguracija mreže i m režnog podsustava ............................................... 1096
Konfiguracijska datoteka /e tc/hosts ................................ ................................................ 1096
Konfiguracijska datoteka /e tc/resolv.conf ................................................................ . 1098
Konfiguracijska datoteka /e tc/sysconfig/netwo rk ................................................... 1099
Nazivi mrežnih kartica u Linuxu .............................................................................................. 1101
Konfiguracija mr ežnih kartica ................................................................................................ . 1102
25.6.5.1. Statička konfiguracija ..................................................................................................... 1103
25.6.5.1.1. Priv remena statička konfiguracija ............................................................................. 1103
25.6.5.1.2. Trajna (perma nentna) ručna konfiguracija mreže ..................................................... 1105

XVI

25.6.5.2. Dinamička konfiguracij a mreže korištenjem DHCP poslužitelja ..................................... 1110
25.6.5.2.1. Priv remena konfiguracija korištenjem DHCP poslužitelja ......................................... 1111
25.6.5.2.2. Trajna konfig uracija mreže kori štenjem DHCP poslužitelja ....................................... 1113
Rad s mrežnim serv isom ......................................................................................................... 1114
25.6.6.1. Konfiguracija mr eže upotrebom naredbe nmcl i i NetworkManager servisa .............. 1115
25.6.6.2. Konfiguracija mr eže upotrebom naredbe nmtu i i NetworkManager servi sa ............. 1119
Konfiguracija pravi la usmjeravanja ( ruta ) ............................................................................... 1121
25.6.7.1. Privremena konfigura cija statičkih ruta s nar edbama route i ip route ........................... 1121
25.6.7.2. Trajna konfigu racija statičkih ruta .................................................................................. 1122
Ruting i optimizacija r uting parametara ................................................................................. 1123
25.6.8.1. Routing policy ( Poli cy based routing ) ............................................................................. 1126
Skripte i funkcijske dato teke sustava zadužene za konfi guraciju mreže ................................ 1130
25.7. Osnovni mrežni alati ............................................................................................... 1132
Naredba ping .......................................................................................................................... 1132
25.7.1.1. ICMP poruka ................................................................................................................... 1133
Naredbe tracer oute i tracepath .............................................................................................. 1137
Naredba nslookup ................................................................................................................... 1139
Naredba netstat ...................................................................................................................... 1140
Naredba nstat ......................................................................................................................... 1142
Naredba list open file s ( lsof ) ................................................................................................... 1143
Naredba socket statisti cs ( ss ) .................................................................................................. 1146
Naredba tcpdump ................................................................................................................... 1150
Naredba ip .............................................................................................................................. 1154
25.7.9.1. Rad s IP parametri ma mrežnih sučelja ........................................................................... 1154
25.7.9.2. Rad s parametri ma rada mrežnih sučelja ....................................................................... 1155
25.7.9.3. Rad s multicastom .......................................................................................................... 1156
25.7.9.4. Mrežni imenič ni prostori ................................................................................................ 1156
25.7.9.5. ARP unosi ....................................................................................................................... 1156
25.7.9.6. Tablice usmjeravanja ...................................................................................................... 1157
25.7.9.7. PBR (Policy bas ed routing) ............................................................................................. 1157
25.7.9.8. TUN i TAP sučelja ........................................................................................................... 1158
25.7.9.9. Sučelja za tune liranje ..................................................................................................... 1158
25.7.9.10. VRF (virtual ro uting and forwarding) ............................................................................. 1159
25.7.9.11. IPSec protokol ................................................................................................................ 1159
Naredba ethtool ................................................................................................................. 1160
25.8. Popis (i opis) osnovnih mrežnih protok ola i servisa ................................................. 1168
Datoteka /etc/s ervices ................................................................ .................................. 1168
TFTP i FTP protokoli ................................................................................................................ 1169
25.8.2.1. TFTP ................................................................................................................................ 1169
25.8.2.2. FTP .................................................................................................................................. 1169
DHCP protokol ........................................................................................................................ 1171
25.8.3.1. Oblik DHCP poruke ......................................................................................................... 1172
25.8.3.2. DHCP - kako to izgleda u praksi ...................................................................................... 1175
25.8.3.2.1. Poruka DHCP Discover ............................................................................................... 1175
25.8.3.2.2. Poruka DHCP Offer ..................................................................................................... 1176
25.8.3.2.3. Poruka DHCP r equest ................................................................................................ . 1178
25.8.3.2.4. Poruka DHCP ACK ...................................................................................................... 1179
25.8.3.2.5. Stanja DHCP kl ijenta .................................................................................................. 1180
25.8.3.3. Konfiguracija DHCP p oslužitelja ..................................................................................... 1181
Bootp protokol ........................................................................................................................ 1183
25.8.4.1. DHCP dio komunika cije .................................................................................................. 1184
25.8.4.2. Dio sa TFTP klijentom ..................................................................................................... 1185

XVII

25.8.4.3. Dio s BOOT MAN AGERom i TFTP klijentom - nastavak .................................................. 1185
25.8.4.4. Kickstart meto da automatizirane instala cije operativnog sustava ................................ 1187
DNS protokol ................................................................ ........................................................... 1192
25.8.5.1. DNS detaljnije ................................................................................................................. 1196
25.8.5.2. Autoritativni D NS poslužitelj .......................................................................................... 1197
25.8.5.3. Rekurzivni pre dmemorijski ( caching ) DNS ..................................................................... 1197
25.8.5.4. Vrste DNS upita ................................................................ .............................................. 1198
25.8.5.5. DNS zapisi ( DNS re cords ) ................................................................................................ 1200
25.8.5.5.1. Autoritativni i neautoritativni odgov ori ..................................................................... 1200
25.8.5.5.2. A zapis ........................................................................................................................ 1201
25.8.5.5.3. AAAA zapis ................................................................................................................. 1201
25.8.5.5.4. PTR zapis .................................................................................................................... 1202
25.8.5.5.5. CNAME zapis .............................................................................................................. 1202
25.8.5.5.6. DNAME zapis .............................................................................................................. 1202
25.8.5.5.7. MX zapis ................................................................ ..................................................... 1203
25.8.5.5.8. NS zapis ...................................................................................................................... 1203
25.8.5.5.9. SOA zapis ................................................................................................................... 1203
25.8.5.5.10. Drugi zapisi ............................................................................................................... 1204
25.8.5.6. Zone i zonske datoteke ................................................................ .................................. 1204
25.8.5.6.1. Zone update ............................................................................................................... 1205
25.8.5.6.2. Full Zone Up date (AXFR) ................................ ............................................................ 1205
25.8.5.6.3. Incremental Zo ne Update (IXFR) ................................................................................ 1206
25.8.5.6.4. Notify (NOTIFY ) .......................................................................................................... 1206
25.8.5.7. Izgled DNS pak eta na mreži ................................ ............................................................ 1207
Telnet i SSH protokoli ................................................................ .............................................. 1208
25.8.6.1. Telnet ............................................................................................................................. 1208
25.8.6.2. SSH ................................................................................................................................ . 1208
25.8.6.2.1. SSH komunik acija detaljnije (kri ptiranje/dekriptiranje) ............................................ 1209
NFS ................................................................................................ .......................................... 1212
25.8.7.1. Instalacija i konfigura cija ................................................................................................ 1213
25.8.7.2. UID/GID mapir anje i sigurnosne opcije u N FS-u ............................................................ 1216
Elektronička pošta (e -mai l) ..................................................................................................... 1217
25.8.8.1. Konfiguracija i rad s elektr oničkom poštom ................................................................... 1220
(R)syslog servis i usl uga ........................................................................................................... 1223
26. Mrežni servisi i usluge ......................................................................................... 1224
26.1. Network Manager .................................................................................................. 1224
26.2. Konfiguracija i rad sa: SSH, SFTP i SCP ..................................................................... 1227
26.2.1.1. Instalacija i pokretanje ................................................................................................... 1227
26.2.1.2. Spajanje na udaljeni SSH ser vis ...................................................................................... 1227
26.2.1.3. Konfiguracija SSH klijent a ................................ ............................................................... 1228
26.2.1.4. Napredna konfiguracija SSH servisa ............................................................................... 1229
26.2.1.5. SCP ................................................................................................................................ . 1229
26.2.1.6. SSH tuneliranj e ............................................................................................................... 1230
26.2.1.7. SSH debugging ................................................................................................................ 1233
26.3. TFTP ....................................................................................................................... 1234
Instalacija ................................................................ ................................................................ 1234
Konfiguracija ........................................................................................................................... 1235
Upotreba i primje ri ................................................................................................................. 1235
26.4. HTTP ....................................................................................................................... 1236
Instalacija ................................................................ ................................................................ 1236

XVIII

Konfiguracija i pokreta nje ....................................................................................................... 1236
Izgled HTTP paketa na mre ži ................................................................................................... 1238
Secure Socket Layer, Transport Layer Security i kri ptografija ................................................ 1239
26.4.4.1. Konfiguracija HTT PS servisa (Apache) ............................................................................ 1252
26.4.4.2. Upotreba hard verski ubrzanih kripto funkcij a ............................................................... 1254
WebSocket .............................................................................................................................. 1260
Proxy poslužitelji ..................................................................................................................... 1261
26.5. Dohvaćanje web sadržaja (nared be wget i curl) ...................................................... 1265
26.6. NTP ........................................................................................................................ 1267
Struktura NTP paketa .............................................................................................................. 1269
Osnovna konfiguracija ............................................................................................................ 1271
Chrony servis ........................................................................................................................... 1274
26.7. Vatrozid ( Firewall ) .................................................................................................. 1276
Kako koristiti vatrozi d ............................................................................................................. 1276
Kako radi Linux vatrozid ipta bles ............................................................................................ 1277
26.7.2.1. Primjeri ........................................................................................................................... 1278
Pogled na mrežni model v atrozida u linuxu i nove tehnolo gije .............................................. 1281
26.7.3.1. Nova funkcionalnost: ips et ............................................................................................. 1285
26.7.3.2. Nftables .......................................................................................................................... 1286
26.7.3.3. Najnovija metoda dohvać anja i obrade mrežnih paketa ( XDP + eBPF ) .......................... 1291
26.7.3.3.1. Upotreba i ko nfiguracija eBPF filte ra (pravila) vatrozida ........................................... 1296
26.8. Napredne mrežne tehnologije ................................................................................ 1299
Network Namespaces ............................................................................................................. 1299
Druga mrežna sučelja ( MACVLAN,IPVLAN,VXLA N,MACVTAP/IPVTAP ) ................................... 1301
Intelligent Plat form Management Interface (IPMI) ................................................................ 1305
Visoko dostupni sustavi ( Hig h Availability ) ............................................................................. 1308
26.8.4.1. Servis conntrack i si nkronizacija stanja mrež nih veza .................................................... 1309
Open vSwitch serv is ................................................................................................................ 1314
Usporedba mrežnih te hnologija hipervizora za virtualizaciju ................................................. 1318
Virtual Private Networ k (VPN) ................................................................................................ 1320
Intrusion detection s ystem (IDS) i Intrusion prevention s ystem (IPS) .................................... 1323
27. Virtualizacija i linux kontejneri ............................................................................ 1326
27.1. Virtualizacija ........................................................................................................... 1327
Linux kao hipervizor ................................................................................................................ 1331
Rad s virtualiza cijom (KVM+QEMU) ........................................................................................ 1334
27.1.2.1. Konfiguracija mr eže ....................................................................................................... 1334
27.1.2.2. Praćenje i analiza rada T AP sučelja ................................................................................ 1337
27.1.2.3. Disk kontroleri ................................................................................................................ 1338
27.1.2.4. Disk image formati ......................................................................................................... 1341
Optimizacije ............................................................................................................................ 1344
27.1.3.1. CPU i RAM ...................................................................................................................... 1344
27.1.3.2. Chipset, BIOS i grafička kartica (VGA) ............................................................................ 1347
27.1.3.3. IOMMU .......................................................................................................................... 1347
27.1.3.4. Ugniježđena vi rtualizacija ( nested virtualiza tion ) .......................................................... 1347
27.1.3.5. QEMU Guest agent i ACPI .............................................................................................. 1348
27.1.3.6. Diskovni podsustav ........................................................................................................ 1352
27.1.3.7. Sistemski sat virtualnih ra čunala .................................................................................... 1352
27.1.3.8. Hot plugging disk, CPU, NIC, RAM .................................................................................. 1353
27.2. Linux kontejneri ..................................................................................................... 1354

XIX

Konfiguracija i upotre ba Linux kontejnera ................................ .............................................. 1356
Podman Linux kontejneri ........................................................................................................ 1364
27.3. Chroot i chroot jail .................................................................................................. 1371
28. Sigurnosni aspekti Linuxa .................................................................................... 1374
28.1. Važnost redovite nadogradnje operativ nog sustava ................................................ 1374
28.2. SELinux sustav ................................................................ ........................................ 1376
Konfiguracija SELinux sustava ................................................................................................ . 1377
28.3. Sigurnosne preporuke ............................................................................................ 1385
29. Dodaci ................................................................................................................. 1394
29.1. ASCII tablica ........................................................................................................... 1394
29.2. Popis i kratki opis Linux naredbi ............................................................................. 1396
29.3. Popis kratica i pojmova ........................................................................................... 1404
29.4. Popis značajnijih datoteka Linuxa ........................................................................... 1420
29.5. Popis često korištenih ser visa u Linuxu ................................................................... 1424
29.6. Propusnosti sučelja ................................................................................................ . 1425
29.7. Usporedba platformi za virtualizaciju ..................................................................... 1426
30. Drugi dodaci ........................................................................................................ 1429
30.1. Formati zapisa (ekstenzije) datoteka ................................ ...................................... 1429
30.2. TCP i UDP portovi u čestoj primjeni ........................................................................ 1431
30.3. Usporedba konfiguracijskih datoteka ovisno o distribuciji Linuxa ili Unixa ............. 1433
30.4. Popis programa otvorenog prog ramskog kôda ........................................................ 1435
30.5. Popis često korištenih datotečnih sustava .............................................................. 1436
31. Izvori informacija ................................................................................................ . 1437
32. Sponzori .............................................................................................................. 1467

0

1. Licenca i pr edgovor
Ova knjiga objavljena je pod licencom:
Creative commons Attribution -ShareAli ke 4.0 International license (CC BY -SA 4.0)

To ukratko znači da ovu knjigu slobodno možete:

Dijeliti dalje — možete umnažati i redistribuirati knjigu na bilo kojem mediju ili formatu.

Stvarati prerade — što znači da možete remiksati, mi jenjati (transformirati) i prerađivati ov u knjigu, u bilo koju
svrhu, pa i komercijalnu.

Pod sljedećim uvjetima:
• Imenovanje — Morate adekvatno navesti autora, uvrstiti poveznicu (link) na licencu i naznačiti eventualne izmjene .
Možete to učiniti na bilo koji razuman način, ali ne smijete sugeri rati da davatelj licence izravno podupire Vas ili
Vaše korištenje djela.
• Dijeli ti pod istim uvjetima — Ako remiksirate, mijenjate ili prerađujete materija l, Vaše prerade morate distribuirati
pod istom licencom pod kojom je bio izvornik (konkretno CC BY-SA 4 ).
• Bez daljnjih ograničenja — Ne smijete dodavati pravne uvjete ili tehnološke mje re zaštite koji će druge pravno
ograničiti da čine ono što im licenca dopušta.
Ovo je sažetak a ne zamjena za punu licencu!

S ve detalje lic ence CC BY-SA 4 p ročitajte na poveznici:
https://creativecomm ons.org/licenses/by-sa/4.0/leg alcode.hr

od rađene ur edni čk e/ gr af ičke nit i bi lo k oj e dr ug e na klad ni čk e ili iz da vačk e

korekcije

!

Za sve komentare i prijedloge ili željena poboljšanja, kontaktirajte me na:
https://www.linkedin.com/in/hrvoje -horvat -48477b1/

Ako želite donir ati autora za izradu , potak nuti na osvježavanje sadrž aja ili razvoj novih inačica knjige ,
dobrovoljne donacije m ožete izvršiti na I BAN broj (mog) računa :
HR96 2360 000 3114 8715 66
Pod opis plaćanja upis ati : Donacija za knjigu ISBN 978 – 953 – 59438 – 2 – 2

Ili skenirajte poveznicu s QR kodom za donaciju (primjerice 10,00 € ):

Autor: Hrvoje Horvat U Osij eku, studenog 2025. godi ne.

7

2.2. Koje su prednost i Linuxa i drugih sustava otvorenog koda
Korišten jem Linuxa i drugih sustava otvorenog programskog kôda (engl. Open Source ), u odnosu na sustave zatvorenog k ôda,
koje često nazivamo komercijalnim [što ne mora biti točno] programima ili sustav ima, dobivamo sljedeće prednosti .

Kvaliteta
Sve kompone nte Linuxa, počevši od Linux kernela (jezgre ) do svih programa, kao i drugih programa i sustava otvorenog k ôda,
razvijani su od strane stotina ili tisuća programera , a testirane od strane stotina t isuća ili više programera i običnih korisnika.
Svi uključeni u razvoj i testiranje, a ovdje govorimo ovisno o programu ; i o stotinama tisuća ljudi, kako je praksa pokazala, vrlo
brzo odnosno višestruko brže nego kod klasičnog komercijalnog softvera, uočavali su greške i ispravljali ih ili radili na
poboljšanjima, o ptimizacijama (p rimjerice ubrzanjima) ili dodavanju novih funkcio nalnosti. Sve navedeno drastično je povećalo
kvalitetu konačnog rješenja. Ovdje možemo citirati tvorc a Linux kernela; Linusa Torvaldsa :

“ Given enough eyeballs, all bugs are shallow ”

Dakle ako dovoljno veliki broj ljudi gleda u određeni probl em ili grešku ( bug ) svi problemi će vrlo brzo b iti otkriveni , a u
konačnici i riješeni. Ako se već bavite razvojem programa, za početak si postavite samo sljedeća pitanja:
• Koliki postotak ukupnog vremena u razvoju svog programa ili sustava trošite n a testiranje u širem smislu riječi?
• Koliko vremena planirate za testnu integraciju, kao i dokumentaciju vašeg programa i sustava?

Sigurnost
Sigurnost je usko povezana s pa radigmama vezanim za kvalitetu je r kao što veliki broj progr amera i korisnika koji razvijaju
softver povećava kvalitetu, istovremeno otkriva i sigurnosne propuste i ispravlja ih. U praksi se to događa puno brže od
komercijalnih rješenja. Naime niti najveće korporacije nemaju na ti suće zaposlenih programera i testera na svakom pojedino m
softveru, a pošto je njihov iz vorni k ôd 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 i sljedeć e pitanje : koliki postotak vremena u
razvoju svog programa ili sustava trošite na sigurnost ; od faze dizajna , p reko imple mentacije do svih faza testiranja.

Fleksibilnost
Komercijalnim proizvođačima programa i sustava u konačnici nije u interesu i mati najbolji, najbrži, najsigurniji i najkvalite tniji
program i li sust av sa svim značajkama , 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 , ali i pitanje ko liko je vremena potrebno uložiti
u razvoj, a da bi program i/ili sustav bio stvarno fleksibilan. Iza svega navedenog zapravo stoje pitanja koja su specifična za
razvoj sustava zatvorenog kôda odnosno proizvođača takvih sust ava:
• K ako će vam nametnuti potrebu plaća nja nove inačice programa i sustava, ako vam je postojeći dobar ili čak odličan .
• K ako će vas natjerati da kupujete nadogr adnje zbog novih značajki , ali i sigurnosnih nadogradnji ili popravaka nekih
(njihovih) grešaka , ali i k ako će vas natjerati da kupite novi hardver (računalo) , ako je postojeći ili novi program
odnosno sustav brz i optimalno radi.

S druge strane sus tavi otvorenog kôda ne boluju od ovakvih (i drugih) bo ljki , te je na vama od luka kada ćete pr imjerice mijenjat i
vaš hardver (računalo) jer budimo iskreni : nova inačica programa nije napravljena na brzinu samo da se proda te se kasnije
ispravljaju (i često naplaćuju) greške. U ovoj priči vi ste besplatni t ester nečijeg programa/sustava, koji još dodatno i plaćate.

Također tijekom pisanja programskog kôda, ako vaš kôd nije fleksibilan u širem smislu riječi, često će vas netko već upozoriti
na to i/ ili ispraviti vaš loše napisan programski kôd. Ova priča se ne zaustavlja na programima. Možda i niste znali, ali postoje i
drugi sustavi ili komponente poput centralnih procesora (e ngl. CPU ) koji su razvijeni i obja vljeni pod nekom od otvorenih licenci,
dakle dostupni svima.

Na ovaj konkretan način dizajn procesora je otvoren i svatko može potencijalno otkriti n eku manu ili predložiti poboljšanje.
Primjeri otvorenog dizajna procesora su:
• OpenSPARC → https://en.wikipedia.org/wiki/OpenSPARC
• OpenPOWER
→
https://en.wikipedia.org/wiki/OpenPOWER_Foundation
• RISC-V → https://en.wikipedia.org/wiki/RISC-V

Postoji i cijeli nîz projekata otvorenog hardvera; pogledajte stranicu: https://en.wikipedia.org/wiki/Open-source_hardware .
No vratimo se na programe; ako se već bavite razvojem programa, postavite si sljedeć e pitanje : koliko je program ili sustav koji
razvijate fleksibilan te koliko pazite da je programski kôd moguće ponovno iskoristiti ( engl . Cod e reuse ).

Interoperabilnost
Programi i sustavi otvorenog kôda se u praksi (barem) pokušavaju držati standarda te ne uvode neke svoje (izmišljene) formate
datoteka, standarde, protokole i sl ično. Stoga imate veću vjerojatnost da će program ili sustav otvorenog k ôda, koji vi koristite,
raditi u kombinaciji s programom i sustavom koji koriste vaši kli jenti ili netko drugi. Također je velika vjer ojatnost , ako
primjerice korist ite neki mrežni p rotokol koji je pisan prema načelima otvorenog k ô da, i z jednog izvora ili su dio jednog rješenja
ili proizvoda, da će isti raditi s drugim r ješenjima ili proizvodima.
Naime ovo je najviše slučaj kod raznih sustava, te mnogih protokola (primjerice mr ežnih protokola) i uređaja , ali i kod programa
i njihovih međusobno , većinom namjerno ili ne , nekompatibilnih formata datoteka.

8

Podrška
Suprotno mišljenju mnogih , podrška za programe i sustave otvorenog k ôda postoji u istoj mjeri kao i za kome rcijalne programe
i sustave. U praksi, podrška z a programe i sustave otvorenog koda, a pogotovo za one koje je pr ihvatila šira zajednica i iza kojih
stoji i neka fondacija ili tvrtka, je znatno bolja, kvalitetnija i uslužnija , a sve z bog nekoliko činjenica:
• P odršku za komercijalne programe i sustave pruža vam tvrtka koja je raz vila taj sustav , a nje ni partne ri zaduženi su
samo za rješavanje određenih (manjih) problema. Pri tome je kôd samog programa i dalje u vlasništvu i dostupnosti
sâ mo tvrtke vlasnika, pa ovdje često dolazi do razvlačenja odgovornosti te gubljenja vremena za vas kao korisnika
njihovog programa ili sustava. Dakle u prebacivanju odgovornosti: tvrtke vlasnika, njihove partnerske tvrtke i Vas.
o Za sve probleme koji traže angažman tvrtke vlasnika programa/sustava, pogotovo , ako je to inozemna tvrtka,
bez obzira ima li predstavništvo u vašoj zemlji, ćete se prema raznim statistikama (i osobnom iskustvu autora )
načekati , a u dosta slučajeva, dobiti ćete rješenje problema koji ste prijavili , nerijetko uz cijeli nîz novo
nastalih (kreiranih) problema.
• P odršku za progr ame i sustave ot vorenog kô da, uključujući mogu ćnost promjen e samog kôda, što uključuje: popravke
grešaka, dodavanje novih značajki, raznih optimizacija prema vaš im željama i slično, može vam odraditi lokalna tvr tka
(iz vašeg grada/županije/države). Što je još bitnije , ti h lokalnih tvrtki može biti i nekoliko, što dovodi do zdrave
konkurencije. Tada će se svi boriti da pruže bolju i kvalitetniju uslugu za vas kao korisnika nekog programa i sustava
otvorenog kô da, koji vjerojatno već koriste m ilijuni ljudi širom svijeta i za koji također postoji podrška od strane stotina ,
ako ne i tisuća drugih tvrtki širom svijeta.
o Za sve programe i sustave otvorenog kô da podršku možete dobiti i od zajednice (engl. community ) koja je i
razvila određeni program ili sustav , a vrlo često je iz te zajednice izrasla i neka fondacija ili tvrtka
kojoj/kojima također možete platiti za još višu (i bržu) razinu podrške.

Mnogi sustavi otvorenog programskog koda često se razvijaju u nekoliko koraka, što uključuje:
▪ Suradnju i razvoj uz testiranje s velikom zaje dnicom inženjera, programera, a nerijetko i mnogih tvrtki i institucija. Na
taj način, pošto je uključen vrlo veliki broj pojedinaca , tvrtki , institucija te cijele zajednice , raz voj i testiranje je
neusporedivo bolje i kvalitetnije od bilo kojeg sustava koji razvija samo jedna tvrtka.
▪ Nakon razvoja i intenzivnog testiranja od strane svih uključenih, sustav se prebacuje u fazu zaključavanja razvoja novih
funkcionalnosti i dodatnih razina testiranja, optimizacija i poboljšanja postojećih komponenti sustava .
▪ Tek nakon nekog vremena ili se objavlj uju stabilne inačice il i se u nekim slučajevima nastavak optimizacija i te stiranja
izvodi od strane tvrtki ili fondacija koje financiraj u takve sustave.

Samo jedan od primjera ovakvog razvoja jest Red Hat En terprise Linux distribucija Linux a, koja se razvija u tri kora ka:
1. Fedora Linux – distribucija Lin uxa koja donosi najnovije tehnologije, koje svi navedeni testiraju i optimiziraju, a
često uključuje i nekoliko tehnologija iz istog područja, od kojih se kasnije odabire samo jedna. Fedora objavljuje
dvije inačice godišnje. Nakon intenzivnog testiranja „zaklju čava“ se određena inačica.
2. CentOS Stream distribucija je dr ugi korak optimizacije, prilagodb e i testiranja odabranih i provjerenih (stabilnih)
tehnologija, koj a se „ kuha “ još neko vrijeme. Dakle ovdje se prima ju stabilizirana ažuriranja i funkcionalnosti ko je
će biti uključene u sljedeću vršnu inačicu Red Hat Enterprise Linuxa .
3. Red Hat Enterprise Li nux distribucija je zadnji korak u ovoj fazi. Iz CentOS Stream -a se odabiru stabilne i
testirane kompo nente te se svakih 3 -4 godin e nakon dodatnog internog ( Re d Hat/IBM ) testiranja i optimizacija
objavljuju vršne inačice Red Hat Enterprise Linuxa. Primjerice vršne inačice v.8 , v.9 . … dok se svakih nekoliko
mjeseci objavljuj u manje inačice (pr. 9.1 , 9.2 i tako dalje) koje sadrže samo sigurnosne i ispravke grešaka ( bugova ).

Pogledajmo nekoliko tablica s a samo nekim od češće ko rištenih programa i sustava otvorenog programskog kôda za koje
je moguće platiti tehničku podršku :

Distribucije Linuxa s komercijelnom podrškom

Naziv distribucije

Naziv tvrtke koja pruža tehničku podršku

Red Hat Enterprise Linux (RHEL)

Red Hat (IBM)

Ubuntu (Ubuntu Pro)

Canonical

SUSE Linux Enterprise Server (SLES)

SUSE

Oracle Linux

Oracle

Rocky Linux

CIQ

. . .

. . .

Virtualizacija i hipervizori

Naziv sustava

Naziv tvrtke koja pruža tehničku podršku

Kubernetes

Google [ GKE ] , Red Hat (IBM) [ OpenShift] , SUSE ] Rancher]

Docker

Docker i treće tvrtke

Podman

Red Hat (IBM)

KVM ( Kernel-based Virtual Machine )

Red Hat (IBM), SUSE i Canonical

Open Stack

Red Hat OpenStack Platform ( RHOSP ) – Red Hat (IBM)
Canonical OpenStack ( Charmed OpenStack ) – Canonical
IBM Cloud OpenStack Services – IBM
Oracle OpenStack – Oracle
. . .

Proxmox VE

Proxmox Server Solutions GmbH

9

Datotečni sustavi i Storage sustavi

Naziv

Naziv tvrtke koja pruža tehničku podršku

CEPH

Red Hat (IBM), Canonical, SUSE

GlusterFS

Red Hat (IBM)

(Open)ZFS

Klara, iXsystems, Canonical i drugi …

XFS

Red Hat (IBM), SUSE

TrueNAS/TrueNAS Enterprise

IXsystems

Open-iSCSI

Red Hat (IBM), SUSE

LIO (Linux-IO Target)

Red Hat (IBM), SUSE

Baze podataka

Naziv

Naziv tvrtke koja pruža tehničku podršku

PostgreSQL

EDB, Crunchy Data, Percona i drugi

MySQL

Oracle

MariaDB

MariaDB

MongoDB

MongoDB Inc.

CockroachDB

Cockroach Labs

Redis

Redis Inc.

Apache CouchDB

IBM (Cloudant)

InfluxDB

InfluxData

Web poslužitelji i aplikacijski poslužitelji te mrežni sustavi

Naziv

Naziv tvrtke koja pruža tehničku podršku

Apache HTTP Server

Apache Software Foundation i drugi

NGINX (NGINX Plus)

F5 Networks i drugi

HAProxy

HAProxy Technologies

Tomcat

Apache Software Foundation i drugi

Dovecot (e-mail)

Open-Xchange

Mrežni i sigurnosni sustavi

Naziv

Naziv tvrtke koja pruža tehničku podršku

pfSense

Netgate

OPNSense

Deciso

OpenVPN

OpenVPN inc.

Suricata (IPS/IDS)

OISF

Snort (IPS/IDS)

Cisco

iptables/nftables

Red Hat (IBM), SUSE

Od drugih programa otvorenog koda tu još imamo ( od stotina ili tisuća ovakvih programa, navodimo samo neke ):
• Sustave za monitoring i logiranje: Prometheus – The Linux Foundation i treće strane, Grafana – Grafana Labs , Elastic
Stack (Elasticsearch, Logstash, Kibana - ELK) – Elastic NV , Zabbix – Zabbix SIA , …
• DevOps i CI/CD alati : Jenkins – CloudBees i drugi, GitLab – GitLab Inc , Ansible – Red Hat , Terraform – HashiCorp ,
… kao i još m noge druge programe, komponente i sustave.

Troškovi
T roškovi programa i sustava otvorenog k ôda u konačnici su nekada i višestruko manji od troškova komercijalnih programa i
sustava . Evo z bog čega :
• Troškovi razvoja ovakvih sustava su manji, što više tvrtki i pojedinaca ih ra zvija, testira i održava.
• V ećina takozvanih distribucija Linux operativnih sustava je besplatna, ali za mnoge od njih možete plaćati direktnu podršku
i to često zakladi [ foundation ] ili tvrtki koja obično stoji iza njih ili naravno nekoj lokalnoj tvrtki.
U slučaju kada 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 i slično. Dakle podupirete ih direktno.
• Z a distribucije Linuxa za koje se plaća podrška (primjerice Red Hat , SuSe , …) cijena je često manja od drugih
komercijalnih operativnih sustava, a uz tu cijenu dobivate i određenu osnovnu podršku, koja je prema mnogima [ i autoru ]
puno bolja, brža i kvalitetnija od onih “ drugih ”. Osim toga možete nadoplatiti i za dodatnu razinu podršk e ili jednostavno
kupiti samo distribuciju Linuxa uz osnovnu podršku , a sve ostalo: podršku , razvoj i opcije, platiti nekoj lokalnoj tvrtki.
• D rugi programi koji su otvorenog kôda i besplatni za osobnu i/ili komercijalnu upotrebu, za sve njih također možete plaćati
podršku, p rema sličnom modelu kao i za distribucije Linuxa (što je vidljivo u tablicama gore) .
• T roškovi pote ncijalnog školovanja ljudi u vašoj tvrtki zbog prelaska na programe i sustave otvorenog k ôda i cjelokupne
migracije na sustave otvorenog koda: k ada se sve zbroji moguće je nekoliko scenarija uz određene varijacije:
o T roškove školovanja i migracije plaćate ili odr ađujete s â mi, početni troškovi su manji , a dugoročni troškovi su
višestruko manji .
o T roškove školovanj a i migracije plaćate (lokalnoj tvrtki), početni troškovi su isti ili približn o isti, a dugoročni t roškovi
su višestruko manji .
o T roškove školovanja i migracije plaćate (lokalnoj i/ili inozemnoj tvrtki), početni troškovi su isti ili zanemarivo ve ći ,
a dugoročni troškovi su znatno manji.

10

Studije o utjecaju otvorenog softvera na gospodarstvo, tehnologiju i inovacije
Postoji cijeli niz studija o utjecaju programa i sustava otvorenog koda na gospodarstvo, tehnologiju i inovacije , od kojih ćemo
spomenuti njih samo nekoliko. O ve studije pružaju različite perspektive i metodologije za procjenu doprinosa otvorenog
softvera odnosno OSS -a (engl. Open Source Software ) na globalnoj i regionalnoj razini.

Studija Europske komisije: "The Impact of Open Sou rce Software and Hardware on Technological Independence,
Competitiveness and Innovation in the EU Economy" (2021)
Ova studija, koju su proveli Fraunhofer ISI i OpenForum Europe za Europsku komisiju, fokusira se na utjecaj OSS- a i
otvorenog hardvera (OSH) na europsku ekonomiju. Sažetak studije jest sljedeći :
• Investicije i povrat – procjenjuje se da su tvrtke u EU 2018. godine uložile oko 1 milijardu eura u OSS, što je rezultiralo
ekonomskim učinkom (direktne, indirektne koristi) između 65 i 95 milijardi eura.
• Potencijal rasta – p ovećanje doprinosa OSS- u za 10% moglo bi godišnje g enerirati dodatnih 0,4% do 0,6% BDP -a EU- a
te više od 600 novih ICT startup -ova.
• Preporuke – studija preporučuje jačanje institucionalne podrške O SS - u, uključivanje otvorenih tehnologija u ključne
politike poput Europskog zelenog plana i Akta o umjetnoj inteligenciji, te uspostavu mreže vlad inih jedinica posvećenih
ubrzanju korištenja otvorenih tehnologij a.

Studija Linux fondacije: "Quantifying the Value of Open Source Softw are" (2022)
Ova studija koristi COCOMO metodologiju za procjenu vrijednosti razvoja OSS-a unutar Linux Foundation Networking ( LFN )
projekata . Sažetak studije jest:
• Rezultati – procijenjeno je da je za razvoj softvera unutar LFN- a potrebno preko 700.000 čovjek - mjeseci rada, što
odgovara monetarnoj investiciji od preko 7,3 milijarde američkih dolara.
• Zaključak – ovi rezultati ilustriraju značajan utjecaj OSS - a na industriju, naglašavajući njegovu ek onomsku vrijednost i
doprinos inovacijama.

Studija Linux fondacije: "Economic Value of Open Source Software Rising i n Terms of Benefits vs. Costs" (2023)
Ova studija, koju je vodio Henry Chesbrough, pionir u proučavan ju otvorenih inovacija, istražuje percepciju tvrtki o koristim a i
troškovima OSS - a. Ključni nalazi studije su:
• Skoro dvije trećine ispitanih tvrtki smatra da koristi od OSS - a jasno nadmašuju troškove.
• Najveće koristi uključuju uštede troškova, brži razvoj, otvorene standarde i interop erabilnost.
• Dugoročniji i aktivniji korisnici OSS - a percipiraju veće koristi.

Studija u časopisu The Journal of Technology Transfer: "Estimating the GDP Effect of Open Source Software and Its
Complementarities with R&D and Patents" (2023)
Ova akademska studija analizira utjecaj OSS- a na BDP koristeći podatke iz 25 najvećih EU zemalj a, SAD -a, Japana, Koreje,
Kanade, Kine, Norveške i Švicarske u razdoblju od 2000. do 2018. godine. Nalazi studije su :
• OSS ima dvostruku prirodu: s jedne strane, otvoreni pristup potiče učenje i inovacije; s drug e strane, doprinosi OSS -u
mogu rezultirati "izlaznim" efektima, gdje koristi od doprinosa često prelaze granic e zemlje.
• Zemlje koje više doprinose OSS - u bilježe veći rast BDP - a, ali također dijele koristi s drugim zemljama.
o Neto učinak – b ez ikakvih OSS doprinosa, prosječni BDP zemlje bio bi 2,2% niži.

Harvard Business School studija "The Value of Open Source Software" (2024)
Studiju su objavili Manuel Hoffmann, Frank Nagle i Yanuo Zhou. Ova studija predstavlja jedno od najopsežnijih istraživanja o
ekonomskoj vrijednosti otvorenog softvera (OSS). Cilj studije bio je kvantificirati i ponudu (trošak razvoja) i potražnju
(vrijednost korištenja) OSS - a, koristeći podatke iz globalnih izvora poput Census II i BuiltWith , koji prate korište nje OSS -a u
milijunima tvrtki diljem svijeta. Ključni nalazi studije su :
• Vrijednost ponude ( supply-side ) – procijenjena je na 4,15 milijardi USD, što predstavlja trošak raz voja najkorištenijih
OSS paketa od nule. Analizirali su broj redaka kô da u najkorištenijim OSS paketima i primijenili modele za procjenu
potrebnih sati rada i troškova rada za njihovu izradu.
• Vrijednost potražnje ( demand-side ) – procijenjena je na 8,8 trilijuna USD, što odražava trošak koji bi tvrtke imale da
same razvijaju OSS koji trenutno koriste. Izračunali su koliko bi svaka tvrtka morala potrošiti da sama razvi je OSS koji
koristi, koristeći podatke o korištenju iz Census II i BuiltWith baza podataka.
• Učestalost korištenja OSS -a – OSS je prisutan u 96% svih baza programskog kôda , što ukazuje na njegovu
sveprisutnost u modernim tehnologijama.
• Distribucija doprinosa – samo 5% OSS programera zaslužno je za 96% ukupne vrijednosti potražnje, što ukazuje na
visoku koncentraciju doprinosa među malim brojem pojedinaca.

11

Opći zaključak iz studija o korištenju OSS -a
Studije pokazuju sljedeće :
• OSS stvara goleme ekonomske vrijednosti – vrijednost doprinosa OSS- u višestruko premašuje uložena sredstva .
Primjerice, 1 milijarda € ulaganja = do 95 milijardi € povrata u EU.
• OSS doprinosi digitalnoj suverenosti i neovisnosti – OSS omogućuje državama i tvrtkama da izbjegnu ovisnost o
zatvorenim platformama i monopolima tzv. Big Tech tvrtki/korporacija.
• OSS potiče inovacije i suradnju – o mogućava brži razvoj, široku ponovnu uporabu komponent i i suradnju među
sektorima koji bi inače radili izolirano.
• OSS doprinosi održivosti – s obzirom na otvorene standarde i transparentnost, OSS često vodi prema efikasniji m i
interoperabilnijim rješenjima.

Poseban osvrt: OSS programi i sustavi

Najveće koristi za organizacije su:
• Ušteda troškova – eliminira licenčne naknade, posebno kod velikih sustava ( Linux , LibreOffice , Maria DB , Nextcloud , … ).
• Fleksibilnost i kontrola – m ogućnost prilagodbe kô da specifičnim potrebama (npr. u vladinim sustavima ili javnim
tvrtkama i ustanovama ).
• Sigurnost i preglednost – programski kôd je dostupan za pregled i analizu , što omogućava brže otkrivanje i ispravljanje
sigurnosnih propusta.
• Brži razvoj – š iroka zajednica omogućuje brže ispravljanje grešaka i ra zvoj novih funkcionalnosti.

Izazovi su sljedeći:
1. Ovisnost o zajednici - a ko projekt nema aktivnu zajednicu, može stagnirati.
2. Nedostatak podrške – za razliku od komercijalnog softvera, podrška može biti nef ormalna ili zahtijevati dodatne
ugovore (npr. Red Hat/IBM, SUSE, Canonical ).
3. Odgovornost i pravna zaštit a – OSS licence (npr. GPL, MIT) ne nude jamstva ( jamstva ovise ugovorima u točki 2. ).

Primjeri OSS sustava koji se ističu u EU:
• Nextcloud – privatni cloud sustav (alternativa Google Drive/Dropbox ). Korištenje u EU: Njemačka, Francuska,
Švicarska, … – koristi se u školama, ministarstvima i sudovima .
• LibreOffice – uredski paket (alternativa Microsoft Office ) . Korištenje: talijanska vojska, francuska policija, gradovi
poput Barcelone, Münchena, Helsinkija , …
• Linux (razne distribucije) – operativni sustav. Distribucije Linuxa u upotrebi:
o Ubuntu i Debian – čest o se koristi u školama i akademskim institucijama .
o Linux Mint , Fedora , openSUSE – koristi se u javnim administr acijama.
• Moodle – sustav za upravljanje učenjem (LMS). Korištenje: sveučilišta i škole diljem EU, osobito tijekom COVID -a.
• Odoo ( ERP/CRM ) – poslovni sustav za vođenje tvrtki (alternativa SAP-u ) . Korištenje: sve više malih i srednjih tvrtki u
EU (posebno Belgija i Francuska).
• OpenProject - alat za upravljanje projektima (alternativa MS Project/Jira ) . Korištenje: institucije EU, ministarstva ,
znanstveni projekti.
• GnuPG i Thunderbird (s Enigmailom ) – alat za kriptiranje i e- poštu. Korištenje: Europska komisija, NGO sektori,
novinari.
• RISC -V (OSH komponenta) – otvorena arhitektura procesora (alternativa ARM/x86 ) . Upotreba u E U: projekti u
Njemačkoj, Španjolskoj, Italiji – koristi se za istraživanje , za AI, IoT i obrambene sustav e.

Poseban osvrt: OSS hardver (OSH)
Open-source hardver podrazumijeva dizajn sklopovlja koji je javno dostupa n (npr. PCB sheme, HDL kod), omogućujući
svakome da ih proučava, mijenja, proizvodi i dije li . Zaključci iz studije EK (2021) su :
• OSH je još uvijek u začetku, ali pokazuje potencijal u: Edge computingu, AI, IoT i mikro kontrolerima.
• RISC -V arhitektura – sve se više koristi kao OSS alternativa ARM (i x86) arhitekturi procesora.
• Fablab i makerspace pokreti – povećavaju interes za OSH među edukatorima i st artupovima.
OSS softver je trenutno daleko zreliji i rasprostranjeniji od OSH- a, ali oba područja nude ogroman potencijal ako se pravilno
integriraju u politike, obrazovanje i industrijske strategij e.

Ove studije potvrđuju značajnu ekonomsku vrijednost OSS -a na globalnoj i regionalnoj razin i. Iako se metodologije i
fokusi razlikuju, svi rezultati ukazuju na to da OSS doprinosi inovacijama, smanje nju troškova i tehnološkoj neovisnosti.
Za maksimalno iskorištavanje potencijala OSS - a, preporučuje se jačanje institucionalne podrške, uključivanje OS S - a u ključne
politike i poticanje doprinosa zajednici.
Pogledajte prethodno i slijedeće poglavlje za druge korisne detalje!

Izvori informacija: [ 1752 ],[ 1753 ],[ 1802 ],[ 1836 ],[ 1837 ],[ 1838 ],[ 1839 ],[ K-19 ].

12

Slobodne i otvorene licence ( Free and Open Source Software - FOSS)
Licence proizlaze iz autorsk ih prava (engl. copyright ) i korist e se za definiranje kako drugi smiju koristiti nečije djelo – bilo da
se r adi o softveru, hardveru (dizajnu ), knjigama, glazbi, slikama ili drugim oblicima kreativnog i tehničkog izražavanja. Isto tako
slobodne i otvorene licence ( Free and Open Source Software - FOSS ) p redstavljaju pravni okvir koji određuje kako se softver
(autorsko djelo) može koristiti, mije njati i distribuirati. Premda se pojmovi " free software " (slobodan softver) i " open source "
(otvoreni kod), koriste kao sinonimi, oni se tehnički često preklapaju u načinu licenciranja, a imaju i različite filozofije rada.

Važno je razumjeti da se Linux kao operativni sustav sastoji od velikog broja komponenti unutar velikog broja softverskih
paketa, od kojih su mnoge objavljene pod različi tim licencama. R azličite distribucije Linuxa se brinu o softveru koji
distribuiraju unutar svoje distribucije, upravo zbog licenci i njihove međusobne kompatibilnosti !

Slobodan softver (Free Software) – ovaj koncept promovira Free Software Foundation ( FSF ) i Richard Stallman. Naglasak je
na slobodi korisnika, a ne nužno na cijeni. " Free " ovdje znači " slobodan kao sloboda govora ", a ne " besplatan kao besplatno
pivo ". Da bi softver bio slobodan, mora jamčiti četiri ključne slobo de:
1. Sloboda pokretanja programa za bilo koju namjenu.
2. Sloboda uvida u rad programa i prilagodbe vašim potrebama (što zahtijeva pristup izvornom kodu).
3. Sloboda širenja kopija programa.
4. Sloboda poboljšanja i dijeljenja poboljšane ina čice drugima.
Filozofija slobodnog softvera je primarno etička i moralna, fokusir ana na prava korisnika.

Softver otvorenog koda ( Open Source Software ) – te rmin je skovan 1998. godin e od strane Open Source Initiative ( OSI ). Fokus
je više na praktičnim prednostima razvoja, popu t transparentnosti, suradnje, bržeg rješavanja grešaka ( bugova) i inovacija.
Iako se velika većina open source softvera preklapa sa slobodnim softverom u smislu dostupnosti izvornog koda i mogućnosti
modificiranja, OSI definicija ima deset kriterija koje licenca mora zadovoljiti, a naglasak je na razvojnoj metodologiji.
U praksi, razlike su često vrlo male, pa se često koristi i zajednički naziv FOSS ( Free and Open Source Software ) ili FLOSS
( Free/Libre and Open Source Software ).

Postoje tri glavne vrste FOSS licenci, koje se n ajčešće klasificiraju p rema stupnju restriktivnosti po pitanju slobode redistribucije
i zatvaranja/otvaranja izvornog koda:

Vrsta licence

Opis

Primjeri licenci

Copyleft
(stroga)

Ove licence, poput GNU General Public License ( GPL ), zahtijevaju d a se sve
izvedene inačice odnosno modifikacije ili programi koji u sebi sadrže dijelove
GPL koda, također distri buiraju pod istom ili sličnom copyleft licencom. To
osigurava da sloboda iz vornog koda ostane sačuvana kroz sve njegove derivate.
Ukratko, " ono što je slobodno, mora ostati slobodno ". Ovo je posebno važno ako
razvijate softver koji uključuje dij elove pod GPL -om – vaš cijeli softver mora
postati GPL.

GNU GPL, AGPL

Permisivne
(slobodna)

Ove licence su mnogo fleksibilnije i omogućuju kor isnicima da izvorni kod
koriste, modificiraju i distribuiraju pod gotovo bilo kojim uvjetima, uključujući i
zatvorene (vla sničke) softverske projekte, uz obično za htjev za zadržavanjem
izvornog autorskog pr ava. One ne nameću obvezu da se izvedena djela licenciraju
pod istom licencom. Primjeri su MIT licenca, BSD licenca i Apache licenca. One
nude veću slobodu za komercijalnu upotrebu i integraciju u vlasni čke sustave.

MIT, BSD, Apache

Weak Copyleft
(slabi copyleft)

Samo dijelovi softvera (npr. bib lioteke) moraju ostati otvoreni, ali ostatak može
biti zatvoren

LGPL, MPL

Za detaljnije informacije o FOSS licencama i njihovoj primjeni, osim Wikipedije preporučujem i sljedeće izvore:
• Open Source Ini tiative ( OSI ) – s lužbena stranica ( www.opensource.org ) sadrži opsežnu listu odobrenih licenci otvorenog
kôda s detaljnim opisima i uvjetima svake licence. Ovo je referentna točka za razumijevanje što čini " open source " licence.
• Free Software Foundation ( FSF ) – s lužbena stranica ( www.gnu.org ) nudi dubinski uvid u filozofiju slobodnog softvera,
objašnjenja GPL licenci i drugih FSF -ovih licenci.
• Choose a License – na stranici ( https://choosealicense.com/ ) je dostupan k ratki vodič za odabir licence .
• SPDX License List – na stranici ( https://spdx.org/licenses/ ) se nalaze standardizirane oznake i opisi licenci otvorenog kôda.
• TLDRLegal – na stranici ( https://tldrlegal.com/ ) se nalaze s ažeci licenci na razumljivom j eziku .

Prema istraživanjima GitHub, SPDX, Black Duck Open Hub, WhiteSource Software (Mend.io) , najčešće korišten e licence su :

Licenca

OSS softver s ovom licencom

Udio u projektima otvorenog kôda

MIT

Angular,CURL,GitLab,InfluxDB,JQuery,Jenkins, …

~32%

Apache 2.0

Apache, Hadoop, Kafka,…

~15%

GPLv3

OpenShot, LizardFS, VLC, Make, GnuPG,…

~12%

GPLv2

Linux kernel, HandBrake, ClamAV ,…

~9%

BSD
(razne varijante)

Chromium, FreeBSD, OpenSSH, Ruby, tcpdump, …

~6%

13

Licenca

OSS softver s ovom licencom

Udio u
projektima
otvorenog kôda
( open source)

LGPL

Glibc, CEPH, FreeCAD, FFMpeg, GTK, Qt, …

~4%

AGPL

Bacula,ElasticSearch,OnlyOffice,Mastodon,MongoDB,
NextCloud,Proxmox Virtual Environment, …

~2%

Ostale

MPL :Firefox, Thunderbird, …

~20%

Pogledajmo kratki opis nekolicine često korištenih licenci otvorenog kôda:
GNU General Public License (GPL v2/v3)
• Copyleft* licenca napisana od strane fondacije: Free Software Foundation ( FSF ):
o Svi derivativni radovi moraju biti distribuirani pod istom licen com :
• GPLv3 uključuje dodatne zaštite od DRM - a i patentnih tužbi.
• Patentna zaštita: GPLv2: nema, GPLv3: ima.
• Ne može se koristiti GPL kod u zatvorenim aplikacijama.
• Nekompatibilna s većinom permisivnih licenci (npr. MIT, BSD bez posebne prilag odbe).

Apache License 2.0
• Permisivna licenca d opušta slobodno korištenje, izmjenu i redistribuciju koda .
• NE zahtijeva da se izmijenjeni ili izvedeni kod objavi pod istom li cencom .
• Kompatibilna s većinom permissive licenci (npr. MIT).
• Omogućuje korištenje u vlasničkom softveru i korištenje u komercijalnim projektima.
• Ima zaštitu od softverskih patenata.
• Ograničenja: programski kôd mora sadržavati obavijest o izmjenama i autorskim p ravima .

MIT License
• Vrlo kratka i permisivna , d opušta slobodno korištenje, izmjenu i redistribuciju kod a.
• NE zahtijeva da se izmijenjeni ili izvedeni kod objavi pod istom li cencom .
• Dozvoljeno korištenje, izmjene, distribucija, i zatvaranje izvornog koda.
• Potrebno je zadržati izvornu obavijest o autorskim pravima
• Vrlo popularna u JavaScript i web projektima.

BSD Licenses (2-clause, 3-clause)
• Slična MIT licenci : m inimalna ograničenja, vrlo slobodna za integraciju.
o Može se koristiti u zatvorenom softveru: dozvoljava potpuno zatvaranje koda.
• Naglasak na nenametljivost : 3- clause verzija zabranjuje korištenje imena autora za promociju .

LGPL (Lesser GPL)
• Omogućuje korištenje open source biblioteka i u zatvorenom softveru, ali izmjene same biblioteke moraju biti otvorene:
ako se biblioteka modificira, te izmjene moraju bi ti objavljene.
• Idealno za razvoj biblioteka koje se mogu koristiti i u zatvorenom softveru.

AGPL (Affero GPL)
• Kao GPL, ali obuhvaća i softver koji se koristi pr eko mreže (npr. SaaS ), što je bitno za web aplikacije .

Sažetak:

Licenca

Copyleft*

Upotreba u
zatvorenim
sustavima

Zaštita od patenata

Pogodna za SaaS

GPLv2

GPLv3

LGPL

(slaba)

ako se biblioteka
ne mijenja

AGPL

Apache 2.0

BSD (2/3)

Copyleft * je pravni mehanizam unutar open source licenci koji osigurava da sav izvedeni softver (i zmjene, proširenja,
kombinacije) ostane slobodan i otvoren, pod istim uvjetima kao i originalni kô d.
Ovisno o licencama i njihovoj kompatibilnosti , moguće je koristiti i model dvostrukih (dual) ili višestrukih licenci .
Primjerice za različite dijelove softvera (moduli, biblioteke, komponente, …) i li unutar logičkih cjelina softvera !

Izvori informacija: [ 1858 ],[ 1859 ],[ 1860 ],[ 1861 ],[ 1862 ],[ 1863 ].

14

2.3. Tko sve koristi Linux i sustave otvorenog koda
Nakon, po nekima sâmo teorije o pre dnostima upotrebe Li nuxa i drugih sustava otvore nog k ôda, pogle dajmo primjere upotrebe
u pra ksi. Sâ mo neke od statistika govore sljedeće: 90% usluga u javnom oblaku koristi Linux , a 62% ugra đenih sustava
( embedded ) također koristi Linux . Preko 60% svih web poslužitelja na svijetu je otvorenog k ô da ; konkretno su to: nginx i Apache .
Svih 500 najsnažnijih superračunala na svijetu pokreće Linux i tako dalje.
Osim toga sve veći broj država i državnih agencija od Sjedinjenih Američkih Država, preko Europe do Japana, sve više koristi
Linux kao i razne druge programe i sustave razvijene na principima otvorenog kôda.

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 :
• CERN ( European Organization for Nuclear Research ) , Fermilab ( Fermi National Accelerator Laboratory ) , …
• Češka pošta – koriste SuSe distribuciju Linuxa s 4.000 poslužitelja i 12.000 računal a.
• Danska – planira zamijeniti MS Windows + Office 365 s Linuxom i Libre Offi ceom (2025.g.) [ 1855 ].
• Europska svemirska agencija ( ESA ) – koristi razne sustave otvorenog kôda.
• Francusk a:
o Parlament: koriste Ubuntu distribuciju Linuxa s OpenOffice paketom, instalirano je ~1.100 računala .
o Policija: koriste modificiranu Ubuntu distribuciju Linuxa imena GendBuntu , na 90. 000 računala .
o Ministarstvo pravosuđa: koristi GNU/Linux i LibreOffice.
• Hrvatska akademska i istraživačka mreža ( CARNET ) koristi Debian distribuciju Linuxa na svojim poslužiteljima.
• Japan - japanska agencija za tehnologiju – koristi alate otvorenog kôda za e-upravu.
o Japanske željeznice: vlakovi tzv. Bullet Trains tj. Shinkansen za sustav kontrole i nadzora v lakova te cijelog
sustava koriste Linux, … .
• Južna Koreja, Ministarstvo unutarnjih poslova koristi Linux u svojoj I T infrastrukturi.
• Meksiko – koristi alate otvorenog kôda u raznim državnim institucijama i agencijama (pr. Ministar stvo financija) .
• Njemačka :
o Grad München migrirao je oko 15.000 stolnih računala s Microsoft Windowsa na Linux ( kontroverza )
o Grad Hamburg je također usvojio rješenja otvorenog kôda, koristeći Open Office i druge alate otvorenog koda u
upravi.
o Njemačka savezna age ncija za mrežne usluge ( Bundesnetzagentur ) koristi Linu x poslužitelje za upravljanje
infrastrukturnim mrežama.
o Njemački parlament koristi rješenja otvorenog kôda za dije love svoje informatičke infrastrukture.
o Njemački nacionalni sustav za zapošljavanje ( Bundesagentur für Arbeit ). Koriste OpenSuSe distribuciju Linuxa
na ~13.000 računala.
• Nizozemsk a:
o Sustav za Minist arstvo unutarnjih poslova ( Internet Research and Investigation Network ( iRN )) . Koriste Ubuntu
Linux na ~2.200 računala .
o Nizozemska vlada: koriste razne sustave otvorenog koda.
• NASA ( National A eronautics and Space Administration ), od posluži telja i stolnih računala do drugih sustava .
Primjerice Space Shuttle misija STS-83 je koristila Linux za kontrolu eksperimenata , a primjerice helikopterski dron
na Marsu (2021.g.) koristi Linux.
• Poljska vlada – koristi alate otvorenog kôda u e-upravi.
• Svjetska zdravstvena organizacija ( WHO ) – koristi softver otvorenog kôda za analizu podataka.
• Sjedinjene Američke Države (SAD):
o Ministarstvo obrane Sjedinjenih Američkih Država ( U.S. Department of Defense ):
▪ Koriste Red Hat distribuciju Linuxa, prema nekim izvorima ovdje je za Red Hat Linux najveći broj
instaliran računala unutar jedne tvrtke ili insti tucije.
▪ Mornarica Sjedi njenih Američkih Drža va: Flota nuklearnih pod mornica ( U.S. Navy Submarine Fleet ):
poznato je da koriste Linux baziran na Red Hat distribuciji Linuxa.
o Federalni sudovi (U.S . Federal Courts ) u Sjedinjenim Američkim Državama.
o Savezna uprava za civilno zrakoplovstvo ( Federal Aviation Administration ) Sjedinjenih Američkih Država.
o San Francisco - sustav napredne kontrole prometa u gradu koristi sustave otvorenog kôda.
o Pošta Sjedinjenih Američkih Država ( U.S. Postal Service ) – za poslužiteljsku infrastrukturu.
• Španjolska; većina državnih institucija i agencija te nekih gradova; primjerice Barcelona .
o Napravili su i svoju distribuciju Linuxa, baziranu na Debian Linuxu, naziva: LinEx , za neke od institucija.
o Svi poslužitelji su migrirani na Linux: preko 900 klastera sa Linux poslužiteljima, širom države.

15

Školstvo :
• Brazilsko školstvo: koriste Linux na 523.000 r ačunala u 50.000 škola širom držav e .
• Filipini: instalirano je 13.000 računala (s planom od još 13.000).
• Indija: 2.650 državnih sveučilišta pl anira koristi (ili već koristi) Linux i sustave otvore nog koda. Razvijaju svoju
distribuciju Linuxa ( KITE GNU-Linux ).
• Kina: razvija svoju distribuciju Linuxa, na procesorima Loongson ; (trenutno sa 150.000 računala u primjeni).
• Njemačka Sveučilišta: koriste SuSe distribuciju Linuxa za poslužitelje i stolna računala u 33 sveučilišta, za 560.000
studenata.
• Savezna Država Indiana (SAD), školski sustav: k oriste Linux za 22.000+ studenata i učenika .
• Italija, regija Bolzano : školski sustav sa 16.000 studenata i učenika .
• Sjeverna Makedonija, školski sustav : Linux stolnih računala: 5.000 i 180.000 Ubuntu Thin Client računala .
• Rusija – veći dio školsk og sustava.
• Švicarska: pojedini kantonalni školski sustavi: koriste Linux s Open Office paketom; primjerice Ženevski kanton:
~9.000 računala .

Neke od velikih tvrtki ili institucija k oje koriste Linux i sustave otvorenog k ô da za pos lovanje ili unutar svojih proizvoda:
• Google : na poslužiteljima i stolnim računalima .
• IBM : na poslužiteljima i stolnim računalima .
• Panasonic : koriste Linux na poslužiteljima i stolnim računalima , platinasti su član AGL fondacije.
• Cisco : na poslužiteljima i stolnim računalima .
• Amazon i Amazon AWS : 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 (tzv. in -flight entertainment system ).
• Peugeot : koriste: 20.000 Novell Linuxa i 2.500 SuSe Linux Enterprise Server distribucija Linuxa na poslužiteljima .
• Wikipedia, Londonska i burza u New York-u koriste Red Hat Enterprise Linux.
• Automotive Grade Linux zaklada (AGL) zaklada:
o Toyota – zlatni je član Linux zaklade , kao i platinasti član AG Automotive Grade Linux L za klade – njeni
o djeli prodaje koriste Linux za oko 30. različitih sustava: od sustava za naručivanje dijelova, garancije,
popravke i drugo. Komunikacijski sustav i Infotainment sustav unutar vozila također koristi Linux .
o Mazda – platinasti je član AGL za klade; koristi Linux za sustav unutar raznih komponenti automobila
( Infotainment / navigacija ), Suzuki – platinasti član AGL zaklade, Honda – zlatni član AGL zaklade , …
o S rebrni članovi AGL zaklade su i :
▪ Mercedes-benz grupacija ,
▪ Ford ,
▪ Volkswagen , … .
• Facebook i Twitter .
• Siemens , Ericsson , HP , De ll , Oracle ,
• Samsung , Microsoft , DreamWorks , ENEA , ATOS .
• NTT Telekom grupa (Nippon Telegraph and Telephone Corporation) - vlasnik preko 30 telekom tvrtki širom svijeta .
• Morgan Stanley , Goldman Sachs , McDon alds , Deutsche Bank , Bank of America , Bank of New York , …
• Članovi Linux fondacije ( www.linuxfoundation.org ):
o Platinasti članovi :
▪ Ericsson, Fujitsu, Hitachi, Huawei.
▪ Intel, Meta, Microsoft, NEC, Oracle, Qualcomm, Samsun g, IBM/RedHat, …
o Zlatni članovi :
▪ Baidu, Cisco, Dell, Google.
▪ Honda, Panasonic, Sony, Toshiba, Toyota, …
o Srebrni članovi su:
▪ AMD, Adobe, AirBnB, Akamai, Alianz, Alibaba, AWS , American Express, Arm,
▪ AT&T, ASrock, Autodesk, Bayer, Bosch, Bull, Canon ical, Citrix, Comcast, …. …


Trenutno (06.2025.) je oko 1.300+ aktivnih tvrtki članova Linux fond a cije !

Izvori informacija: [ 807 ],[ 808 ],[ 809 ],[ 810 ],[ 811 ],[ 812 ],[ 813 ],[ 814 ],[ 815 ],[ 816 ],[ 1661 ] ,[ 1855 ].

16

2.4. Tko još (pam etan) razvija programe i sustave otvo renog koda
Dobro, mnoge državne institucije i tvrtke sve više koriste programe i sustave otvorenog k ôda, ali tko još (pametan) od tvrtki
razvija ovakve sustave? Navesti ć emo samo nekoliko velikih tvrtki koje su najviše uložile u programe i sustave otv orenog koda:

IBM
• Uložio j e više milijardi američkih dolara u ser vise i programe bazirane na Linuxu, kroz Linux Technology Center koji
uključuje 300+ stalno zaposlenih Linux programer a.
• Donira 40 milijuna američkih dolara u Eclipse ( http://www.eclipse.org ) sa 12.5+ milijuna redaka programskog kôda.
• Ulaže u “ Open Source Initiative ” http://opensource.org .
• Donira u razvoj “ Java-base relational database management system ” (RDBMS) Apache Derby
( http://db.apache.org/derby ).

SUN Microsystems (od 2009.g. u vlasništvu tvrtke Oracle )
• 1990. Razvija programski jezik J ava koji 1995.g. predstavlja javnosti te ga 2007 l icencira pod GPL licencom (6.5 milijuna
linija kôda). Kasnije objavljuje OpenJDK kao referentnu implementaciju programskog jezika Java .
• 1999. kupuje njemačku tvrt ku Star Division za 73.5 milijuna američkih do lara i između ostaloga s njom “ StarOffice ” kojeg
kasnije Sun objavljuje kao Open Office pod LGPL i SISSL licencama (~10. milijuna redaka programskog kôda).
• 2005. je razvio i pokrenuo GlassFish (aplikacijski server) kao projekt otvorenog kôda .
• K asnije 2005 godine kupuju tvrtku “ Storage Tek ” za 4.1 milijarde US$ te 2008 objavljuje izvorni kôd “ Sun Storage 7000
Unified Storage systems ” koji je osnova za razvoj ZFS -a, a koji je kombinacija datotečnog sustava i “ volume nanagera ”.
• 2005. objavljuje izvorni kôd kernel i mrežnog d ijela operativnog sustava Solaris , potom pokreće Open Solaris s istim
kô dom pod CD DL licencom, kasnije uključuje i DTRACE, ZFS, Solar is Con tainers i druge tehnologije (2+ milijuna linija
programskog kôda).
• 2008. kupuje tvrtku MySQ L A.B. s MySQL bazom podataka za 1 milijardu američkih dolara. Kasnije objavljuje MySQL
poslužitelj pod GPL licencom. Iz MySQL programskog kôda se potom razvija MariaDB baza podataka.

Google
• 2005. kupuje tvrtku Android Inc . te s njom dobiva Android operativni sustav (koji je baziran na Linuxu).
• 2007. izdaje Android pod Apache 2.0 licencom (10+ milijuna redaka kôda).
• 2008. razvija Google Chrome web preglednik te isti izdaje pod nazivom Chromium u otvo reni kôd (2+ milijuna linija
programskog kôda).
• Razvija Chrome/Chromium OS .
• Razvija Google Web Toolkit (300.000+ redaka programskog kôda).
• Google Summer of Code (GSoC) je godišnji događaj, prvi puta održan 2005. U njemu Google nagrađuje sa 5 . 000 američkih
dolara (u 2013.) stotine studenata koji uspješno završe zadane projekte otvorenog kôda do kraja događanja.

Red Hat (od 2019.g. u vlasništvu tvrtke IBM )
• Praktično živi od filozofije otvorenog kôda.
• Čisto za informaciju, pogledajmo u kupne prihode tvrtke Red Hat , samo kroz nekoliko godina:
o u 2015. godini: 1,79 milijardi (1.790.000.000) U$
o u 2016. godini: 2,05 milijardi (2.050.000.000) U$

• Red Hat Ente rprise Linux ( RHEL ) je dostupan samo kroz pretplatu, koja uključuje pristup softveru (ISO image ) i zakrpama
te raznim razinama tehničke podrške (ovisno o vrsti pretplate).
Proizvod se sastoji većinom od programa koji se distribuiraju kroz licence otvorenog kôda (engl. open source ).
• Cijeli programski kôd za sve programske pakete Re dHat Linuxa je javno dostupan: CentOS i Rocky Li nux, kao i Oracle
koris te isti taj programski kôd za izradu svoj ih distribucija Linuxa zvan ih redom: CentOS, Rocky i Oracle Ente rprise
Linux .
• Razvili su (i napisali) oko 12% programskog kôda cijelog Linux kernel a* , prema broju redaka programskog kôda .
• JBoss aplikacijski poslužitelj s 2+ milijuna redaka programskog kôda, izdan je pod LGPL licencom.
• Red Hat sponzorira Fedora projekat, kao tzv. community odnosno razvojnu inačicu Red Hat Enterprise Linuxa .

Apple
• Sredinom 2015 (ljeto) ob javljuje da će programs ki jezik Swift odnosno Swift 2, koji je n asljednik ili više zamjen a
Objective-C programskog jezika biti u potpunosti objavljen kao otvoreni kôd. Programski jezik Swift će se koristiti za
razvoj aplikacija za OS X i iOS , te će raditi na Linux OS - u. To znači kako će od sada biti moguće razvijati aplikacije
za OS X ili iOS na Linuxu .

Microsoft
• Microsoft je na 21. mjestu po sudjelovanju u razvoju Linux kern ela (~1% udjela, prema broju redaka programskog kôda).
• Shvaća prednosti razvoja pre ma principima Open Source: http://opensource.mscommunity.hr : “ Microsoft je kao tv rtka
proširio svoju filozofiju i sve više pridonosi open source zajednicama tako da promiče developersku suradnju kako bi se
lakše razvijala i održavala interoperabilna IT rješenja. ”
• 19.06.2025. otvara programski kôd Windows Subsystem for Linux ( WSL ) [ 1854] .

23

Neke od inačica UNIXa , koje su i danas u upotrebi su:
• BSD Unix ( Berkeley Software Distribution ) - razvijen u Kalifornijskom sveučilištu Berkeley
o FreeBSD baziran na BSD Unixu.
▪ DragonFly BSD baziran na FreeBSDu.
▪ JunOS - baziran na FreeBSD , razvijen u tvrtki Juniper Networks.
▪ NeXTSTEP (kasnije Mac OS /IOS ) - razvijen u tvrtki NeXT Com puter , kasnije kupljen od tvrtk e
Apple , koji je kasnije postao osnova za iOS i MacOS .
o NetBSD, OpenBSD i TrueOS bazirani su na BSD Unixu.
• SUN OS (kasnije Solaris ) - razvijen u tvrtki Sun Microsystems , sada u vlasništvu tvrtke Oracle.
• IRIX - razvijen u tvrtki Silicon Graphics .
• HP - UX - razvijen u tvrtki Hewlett Packard ( HP E) .
• AIX - razvijen u tvrtki IBM.
• Digital UNIX - razvijen u tvrtki DEC ( Digital Equipment Corporation ), kasnije Compaq , danas HP .
• QNX - razvijen u tvrtki Quantum Software Systems , kasnije QNX Software Systems , potom BlackBerry .
• Minix (n astao od riječi “mini - Unix”) - razvijen od strane Andrew S. Tanenbaum -a.

Detaljniji razvoj UNIXa od 1969. do danas vidljiv je u dokumentu (koji se stalno osvježava) : http://www.levenez.com/unix/u nix.pdf

Zanimljivo je kako je i tvrtka Microsoft kupila licencu za Unix od tvrtke AT&T , krajem 1970, koji je raz vijala pod
imenom Xenix . Njihova inačica Unixa je sredinom 1980 postala i jedna od češće korištenih v arijanti Uni xa , ali ju je kasnije
Microsoft prodao tvrtki Santa Cruz Operation ( SCO ) koja ju je nastavila razvijati pod imeno m SCO UNIX , a d anas se prodaje
pod imenom SCO OpenServer .

Za Unix možemo reći sljedeće :
• P održava multitasking to jest izvršavanje više zadataka odnosno programa istovremeno.

• P održava višekorisnički rad, što znači kako je moguć rad više korisnika istovremeno .

• On j e interaktivan, što znači kako omogućava interakciju s korisnikom te je izvođenje naredbi na njemu trenutno.

Što je specifično za sve UNIX -oidne operativne sustave?
Svi Unixoidni operativni sustavi (uključujući i Linux) imaju zajedničko nekoliko stvari:
• K oriste hijerarhijski datotečni sustav s točno definiranom i razrađenom strukturom direktorija (mapa).

• K onfiguracijske datoteke za sve programe i komponente sustava su obične tekstu alne datoteke .

• Svi uređaji: od diskova (CD/DVD, tvrdih ili SSD), preko mrežnih, grafičkih i drugih kartica su također datoteke
(doduše posebna vrsta). Stoga se komunikacija sa svim uređ ajima (hardverom) svodi na rad s datotek ama ; pisanjem ili
čitanjem u ili iz nji h. Čak se i komunikacija između procesa tj. IPC ( inter-process communication ) svodi na rad s
(posebnim) datotekama.

• Svi programi i naredbe se razvijaju vođeni idejom: mali broj funkcionalnosti unutar jednog programa rezultira brzim,
optimiziranim, dobro te stiranim i dokumentiranim programom koji je lakše održavati. Dakle bolje je razvijati vi še
manjih programa s manje funkcionalnosti unutar svakog od njih nego jedan glomazan program s velikim brojem
funkcionalnosti, koji je znatno teže održavati. Dodatno naredbe treba razvijati tako da podržavaju prihva t i slanje t ôka
odnosno nîza tekstualnih podataka ( engl. Text stream ) kako bi ih mogli zaprimiti odnosno poslati drugim naredbama
(što se odnosi na sljedeću točku) .

• B ilo koji program se može pokrenuti u kombinaciji s drugim programima (ulančavati), na način u kojem se obrađeni
podaci koje nam daje prvi program, mogu proslijediti drugom programu, a ono što je on obra dio, može se poslati trećem
i tako dalje, stvarajući nove mogućnosti. Dakle b ez potrebe za pisan jem novog programa, već kombinirajući
funkcionalnosti postojećih programa. Ova mogućnost se zove Pipe ili cijev za komunikaciju te izgleda ovako:

program 1 | program 2 | program 3

Osnovna filozofija Unixa kaže: „ Everyt hing is a file “ odnosno sve je (neka) datoteka i prema tome baratanje sa sâmim
operativnim sustavom, njegovim aplikacijama ka o i njegovim hardverom je vrlo jednostavno i svodi se na rad s običnim ili
posebnim datotekama. Nadalje, moguće je skriptirati i automatizi rati svaki djelić sustava, kao i odrađivati napredne zadaće poput
filtriranja i preoblikovanja podataka ili teksta prema potrebi, upotrebom takozvanih shell skripti.

Trenutno stanje (2023.g.) po pitanju razvoja nekih od komercijaln ih varijanti UNIX - a (ne i Linuxa) je sljedeće:
• IBM AIX se i dalje razvija, ali više ne za POWER System poslužitelje (ne zaboravimo da j e IBM vlasnik Red Hat
distribucije Linuxa).
• Sun ( Oracle ) SOLARIS - više ne postoji plan daljeg ra zvoja već samo održavanja.
• Hewlett Packard ( HPE ) HP - UX – stavljen na o državanje , bez daljnjeg razvoja novih značajki .
• SCO Group : OpenServer ( sada baziran na FreeBSD Unixu ) i UnixWare se još razvijaju.

Izvori informacija: [ 69 ],[ 1185 ],[ 1436 ].

24

2.7. Povijest otvorenog koda ( Open Sourcea ) i Linuxa
Za razumijevanje razvoja Linuxa važno je razumjeti i razvoj sustava otvorenog kôda (engl. Open Source ). Naime 1983. godine
pokreće se pokret slobodnog softvera ( Free Software Movement ), a godinu dana kasnije (1983/84) Richard Stallman pokreće
GNU projekt koji 1984 kreće s razvojem prvih programa. Prema Stallman -u: naziv " GNU " je odabran jer ta riječ ima značenje
(nije iz mišljena), a predstavlja životinju Gnu (lat. Connochaetes ), uje dno je i zanimljiva (smiješna) rij eč u engleskom jeziku te
je rekurzivna kratica za " GNU's Not Unix " čime se odalo priznanje UNIX -u iz kojeg je preuzeta logika funkcionalnosti
operativnog sus tava. Želja GNU projekta je bila sve progra me koji postoje u komer cijalnim Unix operativnim sustavima napisati
“ od nule ”, ne koristeći niti jednu liniju k ô da od izvornih programa, jer bi to bilo kršenje autorskih p rava.

Dakle željelo se napisati nove programe s istom i li proširenom fu nkcionalnosti u odnosu na postoj eć e i objaviti ih pod nekom od
licenci otvorenog kô da. Veći dio ovog posla, a ovdje govorimo o tisućama progr ama, je dovršen negdje u toku 1992. godine.

Paralelno s ovom pričom, tijekom razvoja raznih varijanti UNIXa, došlo je i do razvoja BSD UNIXa (Berkeley Software
Distributions) iz kojega, odnosno prema kojemu se kasnije razvio i FreeBSD UNIX, i to ponovno „od nule“ .
On je ta kođer objavljen kao sustav otvorenog kôda. Ovaj potez je otvorio vrata razvoju cijelog n îza dodat nih programa otvorenog
kôda , koji su prvotno zamišljeni za korištenje unutar FreeBSD UNIXa , a kasnije su iskorišteni i za druge operativn e sustave.

Neovisno o razvoju FSF i GNU te FreeBSD a , tijekom 1991. godine Linus Torvalds razvija jezgru sus tava (engl Kernel ) i slijedi
logičan korak odnosno povezivanje tisuća programa pisanih unut ar GNU pokreta i sâmog kernela .

Od tog trenutka povezano je sve što je bilo potrebno za stv aranje novog operativnog sustava , danas poznatog pod nazivom Linux ,
mada ga je ispravno nazivati GNU /Linux . Kasnije su dodavani i programski paketi koji su se razvijali prvotno za FreeBSD
UNIX. Od tada do danas pojavile su se razne varijante Linuxa , od kojih su se ustalile tri značajnije grane, na osnovu kojih su
nastale na stotine drugih distribucija Linuxa .

Tri najznačajnije grane takozvanih distribucija Linuxa su:
• Debian Linux
• RedHat Enterprise Linux
• Slackware Linux

Linux se od prve inačice ili ta kozvane distribucije, nastavio razvijati preko nekoliko glavnih distribucija, što je vidljivo na
sljedećim slikama ( 2, 3, 4 i 5 ). Distribucija Linuxa je naziv za operativ ni sus tav ko ji se sastoji od jezgre Linuxa odnosno takozvanog
kernela , GNU prôgrama i alata, dodat nog softvera i upravitelja odnosno menadžmenta softverskih paketa. Distribucija Linuxa
m ože uklj učivati i poslužitelj zaslona ( X Window ) s okruženje m radne površine (engl. Desktop environment ) kao i dodatni softver
poput primjerice: Libre Office, GIMP, koji u pravilu dolazi u tzv. programskim paketima.
Slika 1.A. Izvorna dis tribucija Linuxa

Izvorna distribucija je vrsta distribucije Linuxa koja se ne teme lji na bilo kojoj drugoj distribuciji Linuxa.
Na primjer , distr ibucije Linuxa kao što su Debian , Slackware , Red Hat i Gen too , smatraju se izvornim distribucijama Linuxa, jer
se ne temelje na nekoj dugoj distribuciji Linuxa, kako je logički prikazano na slici. 1.A. .
Pojam distribucija Linuxa je nastao zato što entiteti poput Debiana , Ubuntua ili Red Hata distribuiraju Linux kernel zajedno sa
svim potrebnim softver om i uslužnim programima; poput programa za konfiguraciju i rad mreže, me nadžmenta softverskih
paketa, radne okoline i drugog . U konačnici, distribucija Linuxa je potpuno samostalan operativni sustav.

25

Distribucija Linuxa je također odgovorna za osiguravanje ažuriranja: kernela , sistemskih, uslužnih i drugih programa, odnosno
svih komponenti operativnog sustava. Pri tome se pojam Li nux obično odnosi na jezgru operativnog sustava odnosno takozvani
kernel , a pojam distribucija Linuxa, na cijeli operativni sustav.

Kako bi vam sve navedeno bilo jasnije, pogledajte i poglavlje:
11 . Od kojih komponenti se sastoji Linux.

Slika 1.B. Izvedena (d erivatna) distribu cija Linuxa

Izvedena distribucija (distribucija derivat) temelji se na izvornoj distribuciji Linuxa. Ovakva distr ibucija i ma svoj e druga čije
ciljeve i namjenu od izvorne distribucije iz koje je potekla, pa obično sadrži dodatne programske pakete. Ono što je zajedničko
izvornoj i izvedenoj distribuciji su: kernel, GNU programi i alati, inicijalni softverski paketi i paketni menadžer.
Primjerice Linux Mint temelji se na Ubuntu Linuxu , koji se pak te melji na Debian Linuxu . Stoga je Linux Mi nt praktično
izvedenica od izvedenice. Izvedena distribucija Linuxa distribuira se kao zasebni samostalni operat ivni sustav.
Postoje i takozvane Flavor (engl. okus, aroma) varijante distribucija Linuxa. One imaju iste temeljne pakete i paketni menadžer
kao i zvorna distribucija, čak dijele i iste repozitorije kao i izvorna distribucija, ali imaju različite pakete softvera ili je instalirani
softver konfiguriran drugačije. Primjerice Xubuntu je gotovo identičan Ubuntu Linuxu, al i s Xfce grafičkim sučeljem i nekim
drugim programima, a Kubuntu je praktično Ubuntu s KDE Plazma grafičkim sučeljem i dodatn im programima.
Dakle Xubuntu i Kubuntu su derivati Ubuntu Linuxa, ali su s druge strane oni takozvane Flavor distribucije Ubuntu Linuxa.

Rotirajuće odnosno takozvane Rolling distribucije Linuxa .
U razvoju distrib ucija Linuxa prevladava model razvoja u kojem izdavači distribucije Linuxa perio dički objavljuju nov a izdanja ;
primjerice CentOS 6.1 , nakon kojeg slijedi 6.2, te CentOS 7. 1, nakon koje g slijedi 7.2 i tako dalje. Uglavnom prema princip u
vršne ina čice; poput CentOS 6. x ili CentOS 7. x koji praktično predstavlja ju određenu generaciju , te mnogih njenih pô d inačica
( x ), u kojima i s kojima dol aze i nadogradnje sustava; u smislu ažuriranja programa i svih drugih komponenti sustava. Tako
primjerice s Cen tOS Linuxom v.6.x dolaze razne inačice k ernela 2 .6.32.x, t e određena generacija drugih programa i komponenti.
Dok s CentOS Linuxom v.7.x dolaze razne inačice kernela 3.10.x, te novije (od 6.x) generacije drugih programa i komponenti
sustava . Premda neke druge distribucije Li nuxa nisu toliko vezane za određenu generaciju kernela (pr. 3.10. i sl.) već često koriste
najnovije inačice kernela , kao što je slučaj s distribucijama koje su namijenjene stolnim računalima. Dok se kod poslužiteljskih
inačica uglavnom svi drže određene provjerene i dugoročno podržane generacije kernela (pr. 3. 10.x i sl.) te pripadajućih
programa.

Vezano za jezgru Linuxa odnosno takozvani kernel, njegova stabla i inačice, pogledajte poglavlja:
11.1 . Kernel.
11.1.1 . Rad s kernelom.

Naime ovaj model razvoja se temelji na vršnim i zdanjima te njihovim pod inačicama sustava ( pr. CentOS 7.8 ) koje njeni izdavači
periodički osvježavaju i objavljuju. Međutim postoji i jedan malo drugačiji model razvoja distribucija Linuxa ko ji nije toliko če st
u upotrebi. To je model razvoja u kojem ne postoje klasičn a izdanja i inačice , već se konstant no aktivno (Engl. Rolling =rotirajuće,
kotrljajuće) ažurira sustav , za razliku od prijašnjeg model a ažuriranja u serijama inačica ( verzija ) . Na ovaj način cijeli sustav
uvijek ostaje ažuran. Zbog toga ovakve distribucije Linuxa konstantno nude najnoviju jezgru Linuxa kao i svô g pripa dajućeg
softvera. Arch Linux je najpopularniji primjer ovakve distribucije Linuxa , dok je Gentoo Linux najstarija ovakva distribucija.
Kada koristite ovakav model distribucije , dobivate mala, ali česta ažuriranja. Ovdje nema većih izdanja inačic a tipa X . Y poput:
Debiana ili Ubu ntua , Red Hata/CentOS/Oracle Linuxa - a (ili Rocky Linuxa) ili drugih distribucija Linuxa, koji ip ak čine veliku
većinu svih distribucija Linuxa.

Izvor informacija: [ 167 ].

26

Pogledajmo podjelu na standardne distribucije Linuxa: kako izvorne tako i njihove derivate (izvedene distribucije).
Distribucije bazirane na Debian Linuxu (slika 2. ) , koji koristi .deb format paketa te dpkg men adžer paketa, kao i programe :
dpkg , dpkg-deb , dpkg-reconfigure , o dnosno programe više kategorije po put: apt,apt-get , apt-cache … .

Slika 2. Distribucije L inuxa bazirane n a Debian distribuciji Linuxa.

Na sljedećoj stranici ćemo vidjeti listu distribucija Linux a baziranih na izvornoj distribuciji Linuxa naziva Red Hat Enterprise
Linux .

Iako s mo već dosta govorili o Red Hat distribuciji Linuxa, spomenut ćemo još samo njene dugoročne inačice prema njenim
generacijama , uz planiranu podršku :
• Generacija Red Hat Enterprise Linux 6 .x :
o Objavljena 2010. godine.
o S produženom podrškom ( ELS ) do 2024. godine.

• Generacija Red Hat Enterprise Linux 7 .x :
o Objavljena 2014. godine.
o S podrškom do 2024. godine.

• Generacija Red Hat Enterprise Linux 8 .x :
o Objavljena 2019. godine.
o S podrškom do 2029. godine.

• Generacija Red Hat Enterprise Linux 9 .x :
o Objavljena 2022. godine.
o S podrškom do 2032. godine.

27

Pogledajmo i distribucije bazirane na Red Hat Enterprise Linuxu (slika 3. dolje) , koji koristi .rpm format paketa te rpm menadžer
paketa i pripadajuće programe poput: rpm , yum , dnf i drugih .
Slika 3. Distribucije L inuxa bazirane n a RedHat distribuciji .

Pogledajmo i distribucije bazirane na Slackware Linuxu (slika 4. dolje) , koji koristi .txz format paketa te ta kozvane pkgtools
alate, kao i pripadajuće programe poput: installpkg , removepkg , upgradepkg i druge .

Slika 4 . Distribucije L inuxa bazirane na Slackware dis tribuciji.

Osim navedenih značajnih grana dist ribucija Linuxa, nastale su mnoge distribucije Linuxa koje nisu direktno nastale
od njih, dakle i one su iz vorne distribucije. Neke od ovih pripadnika su:
• Android - da i on je zap ravo distribucija Linuxa.
• Alpine Linux - orij entiran je na sigurnost i minimal izam.
• Coyote Linux - nasta o za potrebe usmjerava nje i vatrozida, iz njega su izr asli drugi projekti.
• Crux - fokusiran je na jednostavnost.
• FireOS - razvijen od tvrtke Amazon za vlast ite potrebe. Baziran je na Android -u.
• Firefox OS - razvijan od M ozzila fondacije i dru gih, za mobitele, tablet e, računala i televizore.
• KaiOS - razvijen od tv rtke Kai OS za mobilne ure đaje.
• LineageOS - razvije na za mobilne uređaje, tablete, set -t op- box uređaje i drugo. Bazi ran na Androidu.
• OpenWrt - fokusira n na usmjerivače i bežič ne pristupne točke ( Wireless Access P oints ).
• Puppy Linux - razvijan s fo kusom na minimal ne hardverske zahtjeve.
• SliTaz - razvijan s fokusom na minimalne h ardverske zahtjeve uz veliku bazu programskih paketa.
• SmoothWall - razvij an za usmjerivače i vat rozide.
• Tiny Core Linux - razvijan kao minimalni funkcionalni Linux (pr. za v irt ualna računala, testiranje i sl. ).
• Tizen - razvija n uglavnom od strane tvrtke Samsung uz podršku Linux fondacij e, za mobilne i TV uređaje.

Važno je razumjeti i to, da se nazivi softverski h paketa za isti softver, na različitim distribucijama Linuxa
mogu ( ma lo) razlikovati u imenu, osim očite razlike u ekstenziji , poput: .rpm , .deb , . txz i drug ih !

28

Pogledajmo i cij elo stablo većine najčešće korištenih i najrasprostranjeniji h distribucija Linuxa (slika 5 . ) :
Slika 5. S tablo svih va žnijih distribucija Linuxa .

Lista gotovo svih distribucija Linuxa , nalazi se na poveznici : htt ps://en.wikipedia.org/wiki/List_of_Linux_distribu tions

Lista aktivnih distribucija Linuxa (u 2024.g. ih je oko 300 ) se može vidjeti na: https://distrowatch.com/ .

29

Što je operativni sustav
Prije nego krenemo dalje, bilo bi važno razumjeti što je uopće operativni sustav i čemu služi.
Operativni sustav (OS) je sistemski softver koji djeluje kao sučelje između komponenti računalnog hardvera i korisnika.
To znači da za hardverske funkcije kao što su primjerice ulazne i izlazne operacije te dodjela i korištenje memorije i uporab a
centralnog procesora koji to sve i odrađuje, operativni sustav djeluje kao posrednik između programa i računalnog hardvera.
To također znači da svako računalo mora imati instaliran operativni sustav za pokretanje programa (aplikacija) .

Programi odnosno aplikacije kao što su Web preglednici, uredski paket programa, poput Libre Office , MS Office , programi za
obradu slika (pr. GIMP ), Notepad , igara i drugih , trebaju neko okruženje za pokretanje i izvršavanje svojih zadatak a.

Dakle operativni sustav (OS) je sistemski softver koji upravlja računalnim hardv erom i softverskim resursima, tako da daje
resurse računala (hardvera) i sve potrebne usluge za rad , računalni m programima odnosno aplikacija ma .
Pri tome operativni sustav (OS) može biti vrlo mali ( pr. MenuetOS ) ili veliki kao Microsoft Windows .
Različiti operativni sustavi mogu se koristiti u različite svrhe. Neki se koriste za svakodnevne stvari poput klasičnog rada na
osobnom računalu. Pripadn ici ove skupine su primjerice Mi crosoft Win dows , Apple MacOS (X) i razne distribucije Linuxa , kao
i mnoge varijante UNIX - a. Drugi su mobilni operativni sustavi poput Android -a ili iOS -a, dok se drugi koriste za speci jalizirani
rad odnosno za posebne namjene, poput specijaliziranih distribucija Linuxa ili UNIX-a, koji rade ne posebnom hardveru (pr.
preklopnici, usmjerivači, IoT uređaji, …) .

Ako pogledamo malo detaljnije, operativni sustav ( OS ) ima mnogo zadataka. On osigurava da svi programi mogu koristiti
centralni procesor (CPU) i (RAM) memoriju sustava, zaslon (monitor) i grafičk u karticu , ulazne uređaje (pr. tipkovnicu i miša)
te drugi hardver.

On također daje korisniku tekstualno ili grafičko sučelje za korištenje računala.
Operativni sustav je također odgovoran za slanje podataka na druga računala ili ur eđaje na mreži odnosno za mrežnu
komunikaciju.
Slika 5.A. Logički pog led na računalo i operativni sustav

Prvi operativni sustav koji je izgledao i donekle radio kao današnji operativni sustavi bio je UNIX , koji je razvijen 1969. godine.
Imao je malu jezgru ( kernel ) i mnogo malih programa koji su se mogli povezivati u radu te imati interakciju s korisnikom.
Mnoge njegove značajke preuzete su iz takozvanog Multicsa , starijeg operativnog sustava napravlj enog 1964. godine.

O povijesti razvoja UNIX -a, pogledajte poglavlje:
2.6.1 . Povijest Unixa.

Ako sliku ( 5.A ) analiziramo još detaljnije, od najniže razine, vidljivo je da operativni sustav pomoću upravl jačkih programa
(engl. drivers ) pristupa svom hardveru odnosno komponentama računala:
• Matičnoj ploči: čipsetu i centralnom procesoru (CPU), memorijskom kontroleru i RAM memoriji.
• Diskovnom kontroleru koji potom pristupa diskovima – na kojima koristimo direktorije i datoteke.
• Grafičkoj kartici – za prikaz na monitoru računala.
• Mrežnoj kartici – za pristup mreži i internetu.
• USB kontroleru i periferiji spojenoj na njega: tipkovnica, miš, …
Potom su u drugom (višem) sloju operativnog sustava implementirani mehanizmi (znani i kao kernel servisi) potrebni za
interakciju korisnika i računala, kao i aplikacija (programa) i hard vera, ali i razne međuveze i interakcije među nji ma .

30

Navedeni mehan izmi (kernel servisi), vid ljivi na slici s prethodne st ranice (slika 5.A. ), prikazani su kao logičke cjeline (na sredini
slike) operativnog sustava. Navedene logičke cjeline čine sloj između aplikacija i ostatk a operativnog sustava, a one su:
• Process Management & Scheduler – ovo je komponenta sustava koja je zadužena za učitavanje i pokretanje programa
(takozvanih procesa ), ali i za njihovo za ustavljanje. Ona pomoću svojih mehanizama brine o točnom vremenskom okviru
unutar kojeg se određeni program može pokretati te se brine o prebacivanju izvršavanja s jednog programa na drugi.

• Memory Manager – ovo je komponenta koja se brine o dodjeljivanju i oduzimanju RAM memorije, kako za korisničke
programe, tako i za sistemske servise i druge komponente sustava.

• File & Storage Manager – ova komponenta upravlja svim aktivnostima vezanim za datoteke (i direktorije) kao što su
pohrana, dohvaćanje, imenovanje, dijeljenje i zaštita dat oteka. Storage Manager dio zadužen je za pohranu podataka.
Naime operativni sustav i im aju nekoliko razina za pohranu koje uključuju: primarnu pohranu, sekundarnu pohranu i
predmemoriju . Razne instrukcij e sustava i poda ci moraju biti pohranjeni u primarnoj memoriji ili predmemor iji , kako bi
ih pokrenuti programi mogli referencirati odnosn o povezati se s njima. O va komponenta je stoga zadužena za pohr anu u
širem smislu riječi.

• Device Manager – ova komponenta upravlja svim (hardverskim) uređajima te prati rad svih uređaj a . Ona je zadužena i
za otkrivanje novog hardvera te za pronalazak i u čitavanja potrebnih upravljačkih programa za hardver.

o I/OManager – ovo je logi čka pod komponenta De vice Manager – a, a njena namjena je skrivanje detalja o
hardveru, na način da se pristup hardveru n a najnižoj razini skriva to jest po jednostavljuje za korisničke (i druge)
programe.
• Command interpreter – ova komponenta tumači naredbe dane od strane sustava te ih obrađuje i povezuje s drugim
elementima sustava prema potrebi.

• Security komponenta brine se o svim sigurnosnim aspektima sustava.

• Communication management – on je z adužen z a koordinaciju i r ad s kompilatorima, interpreterima, ali i drugih softverskim
resursima različitih korisnika sustava i sâmog sus tava odnosno servisa operativnog sustava.

• Inter process management (IPC) – on je zadužen mehanizme za komunikaciju između programa (procesa) .

• Virtual Network – on je zadužen za mrežnu komunikaciju, kako između programa (procesa) unutar istog računala, tako i za
komunikaciju s udaljenim računalima preko mreže.

Za druge detalje o načinu funkcioniranja operativnog sustava Linux, pogl edajte poglavlje:
11 . Od kojih komponenti se sastoji Linux.

Jezgra (kernel) operativnog sustava
Većina navedenih logičkih cjelina, nalazi se u takozvanom kernelu odnosno jezgri operativnog sustava. Pri tome razlikujemo
nekoliko vrsta odnosno kategorija kernela , a to su:
• Monolitni kernel upravlja svim resursima sustava a sastoji se od jednog velikog bloka programskog kôda. Primjerice
Linux kernel (2020.g.) ima 27.8 milijuna redaka programskog kôda. Kernel pruža sve potrebne usluge odnosno navedene
logičke cjeline (slika 5.A. ) koje nudi operativni sustav. Pri ovakvom dizajnu imamo jedan komunikacijski sloj između
hardvera i softvera (aplikacija). Pri tome aplikacije komuniciraju s kernelom i sustavom pomoć u tzv. sistemskih poziva ,
što pojednostavljuje razvoj i održavanje. U slučaju gre ške na nekoj od komponenti unutar ovakvog kernela, cijeli kernel
(i sustav) se može srušiti.
• Mikro kernel također upravlja svim resursima sustava. Međutim u ovoj vrsti kernela , usluge se implementiraju u
različitim adresnim prostorima. Usluge kernela pohranjene su u adresnom prostoru kernela i uključuju samo osnovne
mehanizme to jes t upravljanje adresnim prostorom niske r azine, u pravljanje programskim nitima i komunikaciju m eđu
procesima. Korisničke usluge su pohranjene u ko risničkom adresnom prostoru , a one obavljaju sve preostale funkcije ,
uključujući i sekundarne servise (pr. IPC), ali i upravljačke programe . Primjerice mikro kernel MINIX 3 OS -a ima samo
12,000 linija programskog kôda, što povećava učinkovitost i sigurnost. Osim MINIX OS - a, Mikro kernel arhitekturu
koriste i: GNU Hurd , QNX i Symbian te inačice mac OS i IOS koje su bazirane na Mach kernelu. Ovakav dizajn je
malo kompleksniji što se tiće održavanja i razvoja, ali je potencijalno stabilniji: pr. rušenje upra vljačkog programa ili
drugih servisa koji nisu unutar sâmog kernela, ne uzrokuje veće problem e na sustavu.
• Hibridni ke rnel je kombinacija prethodna dva principa odnosno dizajna. Ovakav dizajn koriste primjerice: MacOS i
Windows NT , Huawei Harmony OS , te inačice macOS i IOS koje su bazirane na Darwin kernelu.

Linux koristi Monolitni kernel, kao i: Fre eBSD , OpenBSD , NetBSD te SunOS ( Solaris ), AIX , BSD UNIX, Windows
10 i noviji, Android i ChromeOS !

Za druge detalje o načinu rada kernela , te komunikaciju aplikacija s kernelom (i međusobno) pogledajte poglavlja:
9.2.1 . Napredno o procesima i signalima  cjelinu “Signali i sistemski pozivi“.
9.3 . Task/process scheduler.
9.4 . Komunikacija između procesa .
11 . Od kojih komponenti se sastoji Linux.

31

Podjela operativnih sustava
Operativni sustavi se dijele na sljedeće kategorije .

Jednozadaćni ( Single-tasking ) i višezadaćni ( Multi-tasking ) sustavi te dijeljenje vremena
Jednozadaćni su sustavi koji su mogli istovremeno izvodi ti samo jedan program (zadatak) . S druge strane v išezadaćn i operativni
sustav može pokrenuti više od jednog programa u isto vrijeme. Višezadaćnosti odnosno sposobnost sustav a da može pokrenuti
više od jednog programa istovremeno se o drađuje dijeljenjem vremena (Engl. Time sharing ) procesora na izvršavanje, između
više zadataka (programa) .
Pri tome centralni procesor ( CP U ) svakom programu daje samo dio svog vremena za izvršavanje odnosno obra du podataka.
Operativni sustavi koji dijele vrijeme za obradu, planiraju točno vrijeme obr ade svakog zadatka odnosno daju mu vremenski
okvir za izvršavanje, kako bi učinkovito iskorištavali sustav .
Oni rade tako da koriste posebne mehanizme za alokaciju procesorskog vreme na, sustava za pohranu, ispis i druge resurse
računala .

Jedno korisnički ( Single-user ) i više korisnički ( Multi-user ) sustavi
Jednokorisnički operativni sustavi ne mogu razlikovati korisnike odnosno ne mogu imati više korisnika na sustavu, ali u pravilu
mogu dopustiti istovremeno pokretanje više programa.
Višekorisnički operativni sustav dopušta rad više korisnika i njiho vu interakciju sa sustavom u isto vrijeme.

Distribuirani sustavi
Distribuirani ope rativni sustavi upravljaju grupom rač unala tako da rade i ponašaju se kao jedno računalo. Oni se najčešće koriste
za složene i hardverski za htjevne izračune (pr. simulacije), koje se zbog ograničenja hardvera ne mogu izvoditi na jednom
fizičkom računalu, već se izračuni pr aktično raspodjeljuju to jes t distribuiraju na više fizičk ih računal a ko ja se nalaze unutar
distribuiranog sustava.

Ugrađeni ( Embedded ) sustavi
Ugrađeni operativni sustavi dizajnirani su za korištenje u ugrađenim računalnim sustavima. Dizajnirani su za rad na hardversk i
slabijim računalima (uređajima) s ma nje autonomije rada, kao što su primjerice: GPS sustavi, ugrađeni sustavi za multimediju i
druge namjene u automobilima, IoT sustavi , pametni satovi, moderne pećnice, zamrzivači te druga bijela tehnik a i slično.
Njihova osnovna značajka je da su vrlo kompaktni i iznimno učinkoviti, te mogu raditi s ogranič enom količinom har dverskih
resursa. QNX Unix, Windows CE, Minix 3 kao i mnoge optimizirane distribucije Linuxa (pr. Yocto Linux ) neki su od primjera
ugrađenih operativnih sustava.

Operativni sustavi u stvarnom vremenu
Operativni sustav u stvarnom vremenu j e operativ ni sustav koj i j amči obr adu dog ađaja ili podataka koji imaju kritično definirana
vremenska ograničenja. Operativni sustav u stvarnom vremenu može imati jedan ili više zadataka, ali kada obavlja v iše zadataka,
koristi specijalizirane algoritme za planiranje kako bi se postigla deterministička priroda izvršavanja zadataka . Ta kav sustav
vođen je takozvanim događajima ( engl. events ), a on se prebacuje između zadataka na temelju njihovih prioriteta ili vanjskih
događaja, dok operativni sustavi s dijeljenjem vremena prebacuju zadatke na temelju vremenskih okvira u kojima se izvršavaju.

Zastupljenost (primjena) operativnih sustava
Pogledajmo i tržišnu zastupljenost raznih operativnih sus tava (2021 .g.) , ovisno o njihovoj namjeni:

Web p oslužitelji

Osobna računala/Laptopi

Mobiteli

Televizori i tableti

Linux

77,4%

Windows

22,7%

UNIX:
• BSD
• Darwin
• Solaris
• Minix

< 1%

Windows

87,56%

MacOS

9,54%

Linux

2,35%

ChromeOS

0,41%

Nepoznato

0,13%

BSD*

0,01

Android

71,24%

iOS

28.26%

Nepoznato

0,40%

Linux

0,05%

Series 40

0,03%

Windows
Phone OS

0,01%

Televizori

Android

31 ,1%

WebOS

22 ,8%

Tizen

15,4%

Fire TV

19,9%

Tableti

iOS

55,55%

Android

44,23%

Linux

0,13%

Superračunala (TOP500)

Embedded

Mainframe

Linux

100%

Linux

38,42%

• Windows10
• Windows
CE7

10,83%

• QNX
• LynxOS

2,82%

z/OS

72%

Linux

28%

Izvori informacija: [ 967 ],[ 968 ],[ 969 ],[ 1107 ],[ 1108 ],[ 1109 ],[ 1110 ],[ 1111 ],[ 1112 ],[ 1114 ],[ 1680 ],[ 1681 ].

32

3. Upoznajmo se s Linuxom

3.1. Unix/Linux ljuska (Shell) i terminali
Unix odnosno Linux ljuska (engl. shell ) je znana i kao naredbeni redak , a u kojemu kolokvijalno rečen o, upisujemo naredbe,
pokrećemo programe i razne skripte. Dakle kao korisnik uno šenjem naredbi ili pokretanjem programa, imamo direktnu
interakciju s računalom, upravo preko shella odnosno skraćeno govore ći ljuske . Korisnici o bično stupaju u in terakciju s
Unix/Linux shellom odnosno ljuskom , pomoću e mulatora terminala, ako se radi o udaljenom pristupu, ili izravnim radom ispred
računal a kada smo spojeni na lokalnu konzolu (tipkovnica/miš/monitor) odnosno takozvani lokalni terminal.
Važno je raz umjeti da u Linuxu možemo raditi u tekstualnom okruženju u kojem ćemo raditi cijelo vrijeme u ovoj knjizi te u
grafičkom radnom okruženju ( X Window sustav ), koje ćemo kasnije samo kratko spomenuti.

Međutim n a prvim Unix operativnim sustavima, a čiji nasljednik je i GNU/ Linux , korisnici su se na poslužitelje, koji su bili velika
specijalizirana ra čunala, spajali preko takozvanih terminala . Prvi terminali su bili posebni pisâ ći , jer monitor i kao izlazni uređaji
još nisu postojali.

Ovakav pristup preko terminala se na engleskom zove TeleType ili skraćeno TTY .
Kod ovih sustava ulazna jedinica je bio sustav za bušene kartice , a danas je to obično tipkovnica. Kasnije se pod nazivom terminal
podrazumijeva lo jednostavno (minimalno) računalo s monitor om i tipkovnicom, spojeno direktno n a udaljeni poslužitelj , obično
nekom međuvezom poput serijsk og ili sličn og sučelja .

Slika 5.1. VT100 term inal
Izvor fotografije: http s://upload.wikimedia.org/wikip edia/commons/9/99/D EC_VT100_term inal.jpg

39

Naredba who
Naredba who daje nam detaljne informacije o korisnicima prijavljenima ( logiranim ) na sustav.
Najčešći prekidači ove naredbe su sljedeći :
• -a – i spiš e nam sve detalje o korisnicima logiranim na sustav.
• -b – ispiš e samo informaciju kada se operativni sus tav pokrenuo (startao).
• -m – ispiš e samo kombinaciju imena računala ( hostname ) i korisničkog imena ( username ).
• -r – ispiš e trenutni Runlevel. Za Runlevele pogledajte poglavlje: 7.3 . Stanja rada Linuxa ( Runlevels ) .
• -u – ispiš e koji su sve korisnici prijavljeni na sustav ( logirani ).

Primjeri :
1. Ispiši mo sve dostupne podatke ( prekidač -a ) o korisnicima spojenim na sustav (ispis smo malo skratili):
who -a

system boot 2014-07-31 20:05
run-level 3 2014-07-31 20:05
root + tty1 2014-07-31 20:05 00:02 3294
root + pts/0 2014-07-31 20:17 . 1199 (10.0.2.2)
ucenik + pts/1 2014-07-31 20:38 . 1419 (10.0.2.2)
U ispisu je vidljivo sljedeće :
• Da je operativni sustav pokrenut 31.07.2014 u 20:05.h.
• Da je trenutni Runlevel broj 3 . O tome znatno kasnije u poglavlju: 7.3 Stanja rada Linuxa ( Runlevels )).
• Da imamo sljedeće prijavljene (logirane) korisni ke ; a navest ćemo ih od gore prema dolje:
o root je spojen preko lokalnog terminala tty1 (onoga koji predstavlja fizičk u vezu na računalo) .
o Z atim su vidljivi datum i vrijeme (treći stupac: pr . 2014-07-31 20:17 ) kada su se korisnici prijavili.
o root i ucenik spojeni su preko pseudo terminala pts/0 i pts/1 . Ovdje se radi se o udaljen om pristupu,
preko ssh protokola pa su vidljiv e i njihove IP adrese ( 10.0.2.2 ), za oba korisnika konkretno.
o Za sve prijavljene (logirane) korisnike imamo i broj procesa (programa) odnosno PID brojeve u predzadnjem
stupcu, a koji i dentificiraju pokrenuti program; pr. PID 3294 za root korisnika fizički spojenoga na
računalo. O procesima ćemo pričati kasnije u poglavlju : 9 . Proces menadžment .

2. Ispiši mo sâmo tko je sve prijavljen ( logiran ) na sustav:
who -u

root tty1 2014-07-31 20:17 00:05 3294
root pts/0 2014-07-31 20:17 . 1199 (10.0.2.2)
ucenik pts/1 2014-07-31 20:38 00:01 1419 (10.0.2.2)

Izvor informacija: [K-1],[K-12] , man who.

Naredba w
Naredba w daje nam informacije o tome koje programe (procese) je pokrenuo koji od prijavljenih korisnika na sustav .
Samim pokretanjem (bez argumenata) naredbe w dobiva mo informacije o svim logiranim korisnicima te programima (procesima )
koje su oni pokrenuli. Pogledajmo i primjere dolje, te animaciju:

1. Ispišimo sve korisnike logirane na sustav te programe (procese) koje su pokrenuli pomoću naredbe w :
w

20:56:20 up 51 min, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.2.2 20:17 0.00s 0.47s 0.03s w
ucenik pts/1 10.0.2.2 20:38 3.00s 0.11s 0.06s /usr/bin/mc - P /tmp/mc …
Opis: Vidimo kako je korisnik root pokrenuo nar edbu w (to smo mi) . Također je vidljivo da je korisnik ucenik pokrenuo
naredbu mc ( Midnight Commander ), uz sve detalje o proc es u i vremenu pokretanja naredbe/ procesa kao i pripadajuće IP adrese
s koje se korisnik spojio , ako se spojio s mreže putem SSH ili nekog drugog protokola za udaljeni pristup .

2. Ispišimo podatke o pokrenutim procesima samo za korisnika ucenik
w ucenik

21:00:44 up 55 min, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ucenik pts/1 10.0.2.2 20:38 4:27 0.11s 0.06s /usr/bin/mc -P /tmp/mc-ucenik/mc.pwd.1423
Vidimo da se korisnik ucenik spojio preko mreže i da koristi virtualni te rminal pts/1 , koliko procesorskog vremena koristi
( JCPU i PCPU ), kao i koju naredbu je pokrenuo ( /usr/bin/mc ) te kada ( 20:38 ) i s koje IP adrese se spojio ( 10.0.2.2 ).

Izvor informacija: [K-1], man w.

40

Naredba last
Naredba last daje nam informacije o tome tko se sve prijavio na sustav i kada. Pokretanjem naredbe bez argumenata, dobivamo
informacije o tome s kojim korisničkim rač unima je ostvareno uspješno logiranje na sustav, kako lokalno tako i s udaljenim
pristupom; primjerice spajanj em preko telnet ili ssh protokola preko mreže . Zapr avo se sve statistike dohvaćaju iz sistemske log
datoteke u koju se upisuju sve statistike vezane za logiranje/prijavljivanje na sustav. To je datoteka: /var/log/wtmp .
Pogledajmo kako to izgleda, kada pozovemo naredbu last (o stavljeno je samo nekoliko statistika zbog jednostavnijeg prikaza) :
last

root pts/0 142.158.247.12 Wed Mar 25 21:15 - 22:59 (01:44)
root pts/0 142.158.247.12 Wed Mar 25 20:12 - 20:55 (00:42)
ivan pts/0 213.147.100.123 Wed Mar 25 12:12 - 17:06 (04:53)
root pts/0 213.147.100.123 Wed Mar 25 12:02 - 12:07 (00:05)
pero pts/0 213.147.100.123 Wed Mar 25 11:57 - 12:00 (00:02)
root pts/0 213.147.100.123 Wed Mar 25 11:55 - 11:56 (00:01)
• U prvom stupcu je ime korisničkog računa koji se spojio na sustav (pr imjerice : root , ivan , per o ).
• U drugom stupcu je terminal na koji se spojio. Pri tome su pts pseudo terminali, za udaljeni pristup računalu .
• U trećem stupcu je IP adresa korisnikovog računala , ako se radi o udaljenom pristupu.
• Č etvrti pa sve do sedmog stupca označavaju datum i vrijeme od k ada do kada je ta veza bila otvorena .
• Zadnji stupac prikazuje ukupno vrijeme rada na sustavu, za pojedinog korisnika.
Moguće je tražiti s âmo statistiku spajanja za određenog korisnika. Pogledajmo sada statistiku za korisnika root .
Sada kao prvi parametar naredbi last moramo dodati korisnički račun ; u ovom slučaju je to korisnički račun korisnika root .
last root

root pts/0 142.158.247.12 Wed Mar 25 21:15 - 22:59 (01:44)
root pts/0 142.158.247.12 Wed Mar 25 20:12 - 20:55 (00:42)
root pts/0 213.147.100.123 Wed Mar 25 12:02 - 12:07 (00:05)
root pts/0 213.147.100.123 Wed Mar 25 11:55 - 11:56 (00:01)
Pomoću prekidača -n moguće je ograničiti samo zadnje unose iz statistike. Ograni čimo se na zadnja četiri unosa :
last -n4

root pts/0 142.158.247.12 Wed Mar 25 20:12 - 20:55 (00:42)
root pts/0 213.147.100.123 Wed Mar 25 12:02 - 12:07 (00:05)
root pts/0 213.147.100.123 Wed Mar 25 11:55 - 11:56 (00:01)
root pts/0 207.117.221.78 Sun Mar 22 12:27 - 17:53 (05:12)

Moguće je i vidjet i točno vrijeme kada je sve sustav restartan. Pogledajmo kako:
last reboot

reboot system boot 2.6.32-44-pve Wed Mar 16 21:51 - 13:17 (1+15:25)
reboot system boot 2.6.32-44-pve Wed Mar 16 21:20 - 21:46 (00:26)
reboot system boot 2.6.32-44-pve Thu Jan 21 15:57 - 21:46 (55+05:48)
reboot system boot 2.6.32-43-pve Sat Jan 16 20:25 - 15:52 (4+19:27)

Izvor informacija: [K-1], man last.

3.3. Osnovna komunikacija između korisnika
Na gotovo svakom Unix ili Linux sustavu možete pronaći dvije nar edbe (programa) s kojima m ožete slati t ekstualne poruke
drugim korisnicima koji su trenutno logirani na sustav. Slijede dvije napredne cjeline!

Naredba write
Naredba write koristi se za slanje poruke željenom korisniku koji mora biti logiran na sus tav.
Upotreba ove naredbe radi se na sljedeći način :
write username tty
• username je pri tome ime korisnika (korisničkog računa) kojem želimo poslati poruku .
• tty je ime terminala na koji je taj korisnik spojen. Ako ne navedemo i me terminala (pr. pts/1 ) , poruka će biti
poslana na sve terminale na koje je taj korisnik spojen (ako se navodi ime korisnika odnosno username ).

Primjer: kao korisnik root pošaljimo poruku : “ Ovo je poruka ” korisniku pero
write pero

Ovo je poruka
Kada želimo završ iti pisanja poruke , potrebno je stisnuti slijedeću kombinaciju tipki: CTRL d .

41

U trenutku kada smo završili s pisanjem, s druge strane korisnik pero dobiva sljedeću poruku (pogledajte i animaciju: ):
Message from [email protected] on pts/1 at 17:33 ...

Ovo je poruka
EOF

Što ako ne želimo primati poruke od drugih korisnika preko naredbe write ?
Za tu namjenu postoji naredba mesg s kojom svaki korisnik može onemogućiti primanje ovakvih poruka.
Onemogućavanje primanja poruka možemo definirati sa :
mesg n
Ponovno omogućavanje primanja poruka:
mesg y

Kako provjeriti tko je onemogućio primanje poruka?
Za provjeru tko ima omogućeno , a tko onemogućeno primanje poruka, možemo pokrenuti naredbu: who -T .
Pogledajmo kako to izgleda:
who -T

root + tty1 2016-05-23 17:19 (:0)
root + pts/0 2016-05-23 17:19 (:0.0)
root - pts/1 2016-05-23 17:20 (:0.0)
pero + pts/2 2016-05-23 17:26 (192.168.11.42)
Vidimo kako je korisnik root koji je spojen na pseudo [ virtualni ] terminal pts/1 , onemogućio primanje poruka jer ima znak
- ispred imena terminala , dok svi ostali imaju omogućeno primanje poruka (znak + ) .
Izvor informacija: [K-1], man write,man mesg,man who.
Naredba wall
Naredba wall (Engl . Write to All ) koristi se za slanje poruka svim logiranim odnosno korisnicima prijavljenim na sustav .
Najčešće se koristi za slanje poruke o gašenju cijelog sustava (posl užitelja) i to od strane administrator ( root korisnika).
Moguća su dva način upotrebe ove naredbe, koja može prihvatiti ulaznu poruku:
• Na standardni ulaz odnosno takozvani stdin .
• P isanjem poruke slično kao i s naredbom write .
Pogledajmo oba primjera. Slanje poruke preko standardnog ulaza. Poruka je “ Gasimo sustav za 5.minuta ”.
echo "Gasimo sustav za 5.minuta" | wall

Dakle sve što šaljemo pr eko echo naredbe dolazi kao stand ardni ulaz (preko pipea | ) na naredbu wall koja onda taj tekst šalje
kao tekstualnu poruku svima. Drugi primjer je slanje poruke poput naredbe write . S time da prvo pokrenemo naredbu wall
(ENTER) pa potom pišemo poruke. Kraj pisanje poruka je isto s kombinacijom tipki CTRL d
wall

Gasimo sustav za 5.minuta

wall poruke primaju svi logirani korisnici kojima je postavljen: mesg y . Odnosno nije (ručno) isključeno primanje poruka , a
koje vrijedi i za write poruke. Kako bi smo 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 s âmom sustavu.
Također ćemo se upoznati s naredbama koje će nam pomoći da pr onađemo potrebne naredbe ili komponente sustava.

Izvor informacija: [K-1], man wall.

3.4. 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, ko je je moguće i pretraživati.
Naredba man
K ada želimo pronaći detaljnije upute naredbe koju poznajemo, kao pomoć ćemo koristiti naredbu man
Ovakve upute (engl. manuals ) pozivamo s naredbom man .
Upute su podijeljene u nekoliko područja (takozvanih sekcija ) , označenih s brojevima:
1. K orisničke naredbe [engl. User Commands ].
2. Sistemski pozivi [engl. System Calls ].
3. Funkcije C biblioteka [engl. C Library Functions ].
4. U ređaji i posebne datoteke [engl. Devices and Special Files ].
5. Fo rmati datoteka i konvencije [engl. File Formats and Conve ntions] .
6. I gre i slično [engl. Games ].
7. Razno [engl. Miscellanea ].
8. Sistemski servisi ( daemoni ) i alati [engl. System Administration tools and Deamons ].
Moguće je pretraživati upute za određe ne naredbe prema definiranim područjima ili bez njih (što je zadano ponašanje ).
U slučaju da navodimo i područje, pretraživanje će se vršiti samo unutar def iniranog područja to jest brojeva od 1. do 8.

42

Ž elimo li saznati unutar kojih vrš nih direktorija su trenutno pohranjene man stranice, pokrenimo naredbu manpath :
manpath
/usr/local/share/man:/usr/share/man

Primjeri :
1. Pron ađimo sve upute (iz svih područja uputa) za s âmu naredbu man (pogledajte animaciju: )
man man

1.1. Pron ađimo upute za naredbu ls (naredbu za izlistavanje sadržaja direktorija)
man ls

2. Pron ađimo upute za datoteku /etc/passwd , koje se nalaze u područj u (sekciji) 5 [ formati datoteka i konvencije ] :
man 5 passwd

3. Pron ađimo upute za TCP protokol , koje se nalazi u područj u (sekciji) 7 [ razno ] :
man 7 tcp

4. Pretražimo whatis bazu pomoću man naredbe, za ključnu riječ ls :
man -k ls

Inicijalna man baza dolazi u programskom paketu imena man-pages . V ažno je razumjeti i da se instalacijom svake nove
naredbe (softverskog paketa) uz sâmu naredbu instalira i njena man stranica s uputama.

Izvor informacija: [K-1], man man,man manpath.

Naredbe whatis i apropos
Naredba whatis daje nam sa mo osnovni opis naredbe z a koju tražimo informacije. Os novni opisi svih naredbi (uz pripadajuću
naredbu) se pohranjuju u posebnu bazu podataka; tzv. whatis database . Pogledajmo primjer za man naredbu:
whatis man

man (1) - format and display the on-line manual pages
man (1p) - display system documentation
man (7) - macros to format man pages
man [manpath] (1) - format and display the on-line manual pages
man-pages (7) - conventions for writing Linux man pages
man.config [man] (5) - 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 kojemu se nalaze detaljniji opisi . Whatis baza se obič no nalazi u: /var/cache /man/whatis i n ju može
(re)kreirati samo root odnosno administratorski korisnik. Whatis baza sadrži s âmo imena svih naredbi uz njihov osnovni opis,
izvučen iz svih man opisa. U slučaju ka 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 koju može pokrenuti samo root
korisnik. U RedHat/Centos 7.x/8+ za tu funkciju je uvedena novija naredba mandb koja mijenja naredbu makewhatis .
Izvršavanje ove naredbe može potrajati neko vrijeme , dok se ne izradi nova baza podataka. Pokrenimo ju ovako:
makewhatis

Naredba apropos nam omogućava pretraživanje bilo koje ključne riječi iz whatis baze podataka. U slučajevima kada ne zn amo
točan naziv neke naredb e , ali znamo što bi ta naredba treb ala raditi, možemo pretraživati bi lo koji pojam ili ključnu riječ. Potom
će nam apropos dati popis svih naredbi čiji opisi sadrže ono što tražimo, uz pridruženu naredbu.

Slijede primjer i : 1. Tražimo sve naredbe koje sadrže ključnu riječ : pci (pogledajte i animaciju: )
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 u opisu sadrži točan pojam: “ remove a directory ”, jer nas zanima kako obrisati neki 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
Ovdje smo dobili tri moguće naredbe: rmdir , unlink i unlinkat od kojih nas je zapravo zanimala naredba rmdir . Sada
možemo potražiti man stranicu (upute) od naredbe rmdir koja nas je i zanimala:
man rmdir

Izvori informacija: man whatis,man apropos,man mandb.

43

Osnovne naredbe vezane uz operativni sustav i komponente računala
Popis osnovnih sistemskih naredb i, pomoću kojih možemo doznati nešto više o s âmom Linux sustavu te o h ardveru na kojem se
nalazi je sljedeći :
• uname – daje nam osnovne informacije o Linux sustavu.
• dmesg – ispisuje sistemske poruke ( HW Events ) od trenutka pokretanja sustava, pa na dalje.
• dmidecode – ispisuje DMI ( SMBIOS ) informacije o hardveru računala (matična ploča, BIOS , RAM memorija, …) .
• lspci – ispisuje sve PCI/PCI express uređaje (i podatke o njima) spojene na matičnu ploču računala .
Pogledajmo što nam govore gore navedene naredbe .

Naredba uname daje nam osnovne informacije o Linuxu. Pokrenimo ju na sljedeći način :
uname -a

Linux server.lab.hr 2.6.32-23 #1 SMP Tue Aug 6 07:04:06 CEST 2013 x86_64 x86_64
x86_64 GNU/Linux
Pokretanjem naredbe uname -a dobijemo nekoliko osnovnih informacija o sustavu:
• Linux – vidimo da je ovo Linux (može biti i neka od varijanti U NIX -a).
• server.lab.hr – ovo je ime računala ( Hostname ) ( server ) s domenom ( lab.hr ).
• 2.6.32.-23 – ovo je inačica Linux kernela koji je trenutno u upotrebi.
• SMP – vidimo da imamo podršku za Symmetric multi-processing za više procesora (CPU) ili više jezgri .
• Tue Aug 6 07:04:06 CEST 2013 – ovo je datum kada je linux kernel kompi li ran.
• x86_64 x86_64 – ovo je arhitektur a procesora za koju je kernel kompiliran; konkretno x86 , 64 bîtan.
• x86_64 – ovo j e a rhitektura ovog sus tava (x86 kompatibilni: AMD , Intel , …).
• GNU/Linux – ovo j e oznaka operativnog sustava (OS ), koja konkretno označava : GNU/Linux.

Naredba dmesg
Naredba dmesg daje nam listu poruka koje je snimio sustav, u trenutku pokretanja računala pa na dalje. Pokrenimo ju:
dmesg

Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-431.11.2.el6.x86_64 ( [email protected] )
(gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Mon Mar 3 13:32:45 EST
2014
Intel GenuineIntel
AMD AuthenticAMD
Centaur CentaurHauls
sd 0:0:0:0: [sda] 585871964 512-byte logical blocks: (299 GB/279 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sda: sda1 sda2 sda3 sda4 <sda5 sda6>
sd 0:0:0:0: [sda] Attached SCSI disk
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 pokretanja i učitavanja kernela i kernel modula ( drivera ) na dalje.
Na početku našeg i spisa vidimo inicijalizaciju procesora (CPU), a kasnije i diskova sd [sda] , kao i raznih portova te sl ično.
Dakle na početku se inicijalizira cijeli sus tav i provjeravaju i in icijaliziraju sve hardverske komponente. Nakon š to se sust av
pokrene, s naredbom dmesg se vide i sve te kuće sistemske poruke ; kao što su poruke kada ubacite CD ili USB disk ili o grešci
neke komponente sustava i sl ično . Ako želimo ljepši prikaz vremena poruka, možemo ju pozv ati i sa prekidačem -T .

Naredba dmidecode
Naredba dmidecode daje nam podatke o našem hardveru. Pokrenimo ju ( skratili smo ispis zbog lakšeg razumijevanja ):
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
Memory Device
Total Width: 72 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Locator: PROC 2 DIMM 8
Type: DDR3
Type Detail: Synchronous Registered (Buffered)
Speed: 1600 MHz
Manufacturer: HP
Configured Clock Speed: 1600 MHz

44

Naredba dmidecode daje nam ispis statusa svih važnih hardverskih komponenti , koje su standardno podijeljene u nekoliko
kategorija , prema nazivima kako ih i možemo koristiti ( nazivi kategorija pišu se malim slovima ) :
• bios – za informacije o BIOSu (engl. Basic Input/Output System ) odnosno osnovnom ulazno/izlaznom sustavu.
• system – za hardverske informacije o sustavu (proizvođač računala/poslužitelja, model i slično ).
• baseboard – za hardverske informacije o komponentama na matičnoj ploči (pr. disk kontroler i mrežne kartice).
• chassis – za hardverske informacije o kućištu (obično za poslužitelje ).
• processor - za informacije o centralnom procesoru (CPU).
• memory – za informacije o memorijskom kontroleru (pr. m ax . memorije koju podržava) te svim memorijskim modulima.
• cache – za informacije o među memorijama ugrađenim u procesor (CPU); dakle: L1 , L2 i L3 memorijama.
• connector – za informacije o vanjskim portovima na matičnoj ploči; poput USB, serijskog i paralelnog porta i sl.
• slot – za informacije o svim dostupnim sab irničkim utorima na matičnoj ploči; poput: PCI , PCI express i slično.
Ovom naredbom možemo zatražiti ispis stanja svih hardverskih ko mponenti ili naredbu pozvati s prekidačem -t uz specifikaciju
gore navedene komponente računala, koja nas konkretno zanima , za koju ćemo potom dobiti informacije .
Pr imjerice, ako nas zanimaju samo podaci o BIOSu matične ploče, to možemo saznati pomoću sljedeće naredbe :
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 R4.14.1561.02
Release Date: 11/25/2013
Address: 0xE49F0
Runtime Size: 112144 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

Naredba lspci
Naredba lspci daje nam ispis svih uređaja na PCI sabirnici, bilo da su integrirani na matičnu ploču ili da se radi o uređajima
koji su na zasebnim karticama. Naredba lspci dolazi u softverskom paketu pciutils .
Pogledajmo primjer njenog pozivanja odnosno pokretanja i ispisa koji nam ona daje:
lspci

00: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:05.0 System peripheral: Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System
Management 00:11.0 PCI bridge: Intel Corporation C600/X79 series chipset PCI Express
00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller
#2 00:1c.0 PCI bridge: Intel Corporation C600/X79 series chipset PCI Express Root Port 1
00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host
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 BCM57810 10 Gigabit Ethernet
Naredba lspci ispisuje nam po datke o svim PCI sabirnicama i uređajima koji su se prijavili na te PCI sistemske sabirnice, bilo
da se radi o klasičnoj PCI , PCI-X ili najnovijoj PCI Express sabirnici i uređajima na njoj .
Ovdje je vidljiv dobar dio hardvera samog računala . Osim osnovnog pozivanja ov e naredbe, moguće je istu naredbu pozvati i sa
prekidačem -v ili s -vv , ako želimo još više detalja o hardveru . To možemo postići ovako :
lspci -v
ili ovako
lspci -vv

Ako želimo i identifikacijske podatke o uređajima (takozvane PCI ID brojeve/ident ifikatore ), to možemo dobiti dodavanjem
prekidača -nn . Odnosno naredbu možemo pokrenuti p rimjerice ovako:
lspci -vv -nn

Pogledajte i poglavlja:
10.2 . (Re)konfiguracija sabirnice i uređaja na njoj te: 11.1.2.1 . Uređaji ( devices ) detaljnije.
10.5.1 . IRQ ( Interrupt request ) odnosno u cjelinu: MSI (Message Signaled Int errupts)
Vezano za instalaciju softverskih paketa, pogledajte poglavlje:
7.2.2.1 . Rad s YUM-om .

45

U ovom slučaju pogledajmo detaljnije samo mrežnu karticu INTEL 82547EI ( skratili smo ispis ):
lspci -vv

02:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller
Subsystem: Fujitsu Technology Solutions Device 101e
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV - VGASnoop- ParErr- Stepping- SERR-
FastB2B- DisINTx-
Status: 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 e0100000 (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 PME -
Kernel driver in use: e1000
Kernel modules: e1000
Ovdje vidimo i koji se kernel modul (upravljački program) koristi za naš PCI uređaj odnosno mrežnu kar ticu: Kernel modules:
e1000 . D akle upravljački program za našu konkretnu mrežnu karticu (sučelj e) se zove e1000 .

O uređajima i sabirnicama nešto kasnije, u naprednijim poglavljima!
Ako uz informaciju koji se kernel modul (upravljački program) koristi za određeni PCI uređaj, želimo vidjeti i mogućnosti
( Capabilities ) određenog PCI uređaja, možemo koristiti i proš irenje ove naredbe (gledamo PCI uređaj: 02:01.0 ):
lspci -vnk -s 02:01.0

Potom ćemo dobiti nešto poput (filtrirali smo ispis):
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=17 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 00-00-e0-db-55-0f-98-70
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [230] Transaction Processing Hints
Iz čega vidimo sve hardverske mogućnosti i opcije naše mrežn e kartice.

Iz kojih sve datoteka i s kojim naredbama možemo vidjeti na kojoj inačici i distribuciji Linuxa se nalazimo?
Naime bez obzira na kojoj distribuciji Linuxa radili: Debian , Ubuntu , RedHat / CentOS , OpenSuSe ili nekoj drug oj , za sve njih
su zajedničke datoteke u kojima se zapisuju podaci o točnoj inačici i imenu distribucije Linuxa na kojem radimo.
Tako imamo datoteku /etc/os-release ili neku od datoteka imena: /etc/ XY - release pri tom e XY ovisi o distribuciji
Linuxa, pa to može biti : os , system , redhat , centos i sl ično . Pogledajmo datoteku /etc/os-release
cat /etc/os-release

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"

Iste podatke nam može dati i naredba hostnamectl (za CentOS/RedHat 7.x ili noviji), stoga ju pogledajmo/pokrenimo:
hostnamectl

Static hostname: server-1
Icon name: computer-desktop
Chassis: desktop
Machine ID: 1a07b95a79414b8db99d4fa31053a1dc
Boot ID: d4a34c90b35e4f8e8209cfcd43d8fede
Operating System: CentOS Linux 7 (Core)
Kernel: Linux 4.18.14-1.el7.elrepo.x86_64
Architecture: x86-64
Ovime dobivamo iste podatke kao i iz prethodnog primjera , samo malo ljepše formatirane .

Izvori informacija: [ 99 ],[ 100 ],[ 101 ],[ 102 ],[K- 12 ],[ K-14 ], man uname,man dmesg,man dmidecode,
man lspci,man hostnamectl.

46

4. Datotečni sustav ( File System )
Datotečni sustav (engl. file system ) je zadužen za organizaciju, upravljanje i pohranu podataka odnosno datoteka i direktorija na
diskovima i drugim medijima. Datotečni sustav je nužan kod svih fiksnih (HDD/SSD/NVMe) i izmjenjivih diskovnih medija
(USB diskova CD/DVD/Blue -Ray) jer bez njega ne možemo koristiti datoteke i direktorije . Važno je znati da ma ksimalna
veličina cijelog dat otečnog sustava i dat oteka na njemu ovisi o vrsti datotečnog su stava. Neki operativni sustavi podržavaju samo
određene datotečne sustave, a druge ne prepoznaju ili im mogu pristupati vrlo ograničeno (pr. samo za čitanje).
Proces instalacije datotečnog sustava na disk se naziva formatiranje ( o formatiranju ćemo govoriti znatno kasnije ) .

Povijest razvoja datotečnih sustava
Razvoj datotečnih sustava još od vremena razvoja prvih UNIX -a (1969.g.) do modernih Linuxa odvijao se kroz nekoliko
desetljeća, p rateći evoluciju samih operativnih sus tava, hardv era, ali i po treba korisnika. Ovaj razvoj može se podijeliti u ključne
faze, k oje obuhvaćaju nastanak temeljnih koncepata na UNIX -u, te kasnije inovacije i prilagodbe u svijetu Linuxa.
Pogledajmo kako su se datotečni sustavi razvijali kroz povijest.

Počeci UNIX - a i rani datotečni sustavi (1970.g.) – UNIX, razvijen krajem 1960- ih i početkom 1970 -ih u Bell Labsu , donio je
temeljne ideje o organizaciji datoteka i direktorija koje su utjecale na sve kasnije datotečne sustave. Jedan od ranih , ali ključni h
sustava iz tog vremena je bi o o riginalni UNIX datotečni sustav (1971 .g.) koji je uveo osnovne koncepte. P rvi UNIX dat otečni
sustav (koji nije imao ime) podržavao je jednostavnu hijerarhijsku strukturu direktorija s datotekama. Svaka datoteka imala j e
numerički identifikator ( inode ) i bil a je organizirana u blokove. Osim toga on je definirao i o graničenja – sustav je bio vrlo
jednostavan, s maksimalnom veličinom datoteke od 64 KB i primitivnim rukov anjem diskom. Nakon njega su uslijedili:

UNIX V6 i V7 File System (1975 - 1979.g.)

UNIX V6 File System – donio je koncept inode strukture koja pohranjuje metapodatke o dat otekama (vla sništvo, pra va pristupa ,
veličina, vremenske oznake). V6 također uvodi di rektorije kao specijalne datoteke koje pohranjuju popis imena i inode brojeva.

UNIX V7 File System – uveden krajem 1970- ih, unaprijedio je prethodni sustav povećanjem maksimalne veličine datoteke i
ukupnog broja datoteka.

BSD i FFS (1980-te godine .) – UNIX je bio otvoren za modifikacije i poboljšanja, pa su mnogi f akulteti i istraživački instituti
proširili njegove mogućnosti. I stiče se Berkeley Software Distribution ( BSD ), koji je donio mnoge i novacije. Pripadnici su:

Fast File System ( FFS ) - BSD (1983.g.) - FFS je stvoren u BSD inačici UNIX - a (4.2BSD) i bio je veliko poboljšanje u odnosu
na stari UNIX V7 datotečni sustav. FFS je postao de facto standa rd za mnoge UNIX sustave tijekom 1980 -ih i temelj za mnoge
buduće datotečne sustave, Novosti koje je uveo su:
▪ Efikasnije alociranje pros tora – uveo je cilindre (cilindarske grupe) i bolju raspodjelu blokova kako bi smanjio fragmentaciju
diska te poboljšao performanse.
▪ Podrška za veće datoteke – povećanjem maksimalne veličine datot eka i ukupnog broja datoteka.
▪ Simbolički lin kovi - omogućena j e uporaba simboličkih linkova (engl. symbolic links ), što je poboljšalo fleksibilnost
datotečnih sustava.

FFS i nastanak UFS-a

• Unix File System ( UFS ) je evoluirao iz FFS- a i često se koristi kao opći termin za datotečne sustave temeljene na FFS-u .
UFS je zapravo standardizirana verzija FFS-a s dodatnim značajkama i optimizacijama. UFS je postao zadani datotečni
sustav u mnogim inačicama BSD - a i u komercijalnim UNIX varijantama kao što su SunOS i Solaris .
Ključne značajke FFS -a koje je naslijedio i UFS su sljedeće :
o Hijerarhijska struktura direktorija s podrškom za simboličke linko ve .
o Inode struktura za pohranu metapodataka o datotekama.
o Cilindarske grupe ( cylinder groups ) za bolju distribuciju podataka i smanjenje frag mentacije diska.
o Journaling (kod UFS-a na Solarisu ) – Solaris je dodao UFS journaling kako bi osigurao bolju otpornost na padove
sustava, dok izvorni FFS nije imao tu značajku.

• UFS 2 - UFS2 je poboljšana inačica UFS -a uvedena u FreeBSD UNIX-u . Dodaje podršku za veće datoteke i poboljšava rad
sa 64-bitnim adresiranjem.

Linux i EXT serija datotečnih sustava (1990 godine)

• Extended File System (EXT) – 1992.g. – prvi izvorni Linuxov datote čni sustav EXT , razvijen je 1992. godine. Bio j e
inspiriran FFS-om iz BSD- a, ali je imao brojna ograničenja. Primjerice maksimalna veličina datoteke bila je samo 2 GB, a
maksimalna veličina particije također samo 2 GB.

• Extended File System 2 (EXT2) – 1993.g. – EX T2 je značajno poboljšao svojeg prethodnika. Pos tao je vr lo popu laran i dugo
je bio zadani Linuxov datotečni sustav. Njegove osnovne značajke su:
▪ P roširena su ograničenja maksimalne veličine datoteka i particija.
▪ Uveo je tzv. bitmape za praćenje slobodnog prostora, što je poboljšalo efikasnost.
▪ EXT2 je bio tzv. non-journaling datotečni sustav, što je značilo da je bio brz, ali m anje otporan na kvarove.

• Extended File System 3 (EXT3) – 2001.g. – uveo je journaling te kompatibilnost s EXT2 .

• Extended File System 4 (EXT4) – 2008.g. – uveo je mnoga poboljšanja, podršku za veće datoteke (16TB) i veće particije
(1EB). Uvodi tzv. extent umjesto tradicionalne blok- strukture, što je smanjilo fragmentaciju. Podržava i brzo montiranje i
provjeru konzistencije pod ataka. Naim e EXT4 koristi značajku, koja omogućava brzo provjeravanje datotečnog sustava
nakon pada sustava.

47

2000-te godine na dalje – uslijedio je razvoj:

• XFS (2001.g.) – XFS je visoko skalabilan d atotečni sustav prvotno razvijen za operativni sustav IRIX, a kasnije je prebačen
i na Linux. Popularan je u scen arijima koji zah tijevaju rad s velikim datotekama i velikim količinama podataka. I on
podržava journaling , velike datoteka (do 8EB), i velike particije (8EB), te koristi efikasnu dinamičku alokaciju prostora
(tzv. delayed allocation ) koja omogućuje efikasnije korištenje diskovnog prostora i poboljšava performa nse. Iako XFS
izvorno ne podržava snapshote (snimku stanja u vremenu) , moguće ih je koristiti u kombinaciji s Linux LVM-om .
• Btrfs (2009.g.) – Btrfs je moderan datotečni sustav razvijen kako bi ponudio napr edne značajke kao što su snapshoti ,
kompresija i integrirano upravljanje RAID -om. On koristi copy - on -write ( COW ) me hanizam, što znači da se promjene ne
upisuju odmah u iste blokove na disku, nego se prvo stvara nova kopija podataka, što poboljšava integritet podataka. Btrfs
ima ugrađenu podršku za RAID konfiguracije, uključujući RAID 0, RAID 1 i RAID 10, bez potrebe za posebnim RAID
kontrolerom te podržava transparentnu kompresiju datoteka. Korištenjem provjernog zbroj ( checksum ) za metapodatke i
podatke, Btrfs može detektirati i ispraviti oštećenja podataka.
• ZFS – on je izvorno razvijen za Sun Solaris UNIX , ali je kasnije prebačen na Li nux kao projekt otvorenog kôda. Poznat je
po robusnoj zaštiti podataka i naprednim funkcijama upravljanja diskom. Poput Btrfs -a, ZFS koristi COW mehanizam za
bolju zaštitu podataka i eliminaciju potrebe za defragmentacijom . ZFS omogućava stvaranje gotovo neograničenog broja
snapshota i klonova datotečnog sustava, što je korisno za backup i testiranje. ZFS im a ugrađeni sustav za upravljanje
diskovima koji omogućuje korištenje različitih RAID konfiguracija, s pobo ljšanim z aštitnim mehan izmima za redundanciju
podataka. Osim toga on koristi checksum e kako bi detektirao i ispravio oštećene podatke. Kada otkrije oštećenje, automatski
ih ispravlja koristeći redundantne kopije. ZFS podržava i takozvanu deduplikaciju podataka, što smanjuje prostor na disku
eliminacijom dupliciranih blokova podataka.
• F2FS ( Flash-Friendly File System ) – on je posebno dizajniran za flash memorije ( SSD , eMMC ), kako bi bolje iskoristio
karakteristike tih uređaja i produžio njihov vijek trajanja. F2FS je dizajni ran tako da minimizira broj zapisivanja na disk,
čime smanjuje trošenje SSD diskova. To produžuje životni vijek flash memorija. Osim toga on koristi tzv. zone-aligned
strukturu koja je optimizirana za rad s logičkim blokovima na SSD diskovima. F2FS je razvijen da minimizi ra fragmentaciju
podataka na disku, čime se poboljšava ukupna brzina pristupa pod acima

Razvoj datotečnih sustava od prvih UNIX - a do modernog Linuxa obilježen je stalnim tehnološkim inovacijama. Razvoj je krenuo
s jednostavnim, no učinkovitima sustavima, a danas imamo napredne datotečne sustave poput XFS , Btrfs i ZFS , koji nude ne
samo pouzdanu pohra nu podataka, već i napredne značajke za upravljanje i zaštitu. Linux je s vremenom postao platforma koja
podržava razne vrste datotečnih sustava, ovisno o potrebama korisnika, što ga či ni vrlo prilagodljivim opera tivnim sustavom za
različite svrhe, od osobnih računala do velikih poslužitelja.

Vezano za instalaciju datotečnog sustava na diskovni uređaj (tzv. formatiranje ) pogledajte poglavlje:
13.6.1 . Kreiranje particija.
13.6.2 . Formatiranje particije.
Pogledajte i detalje o raznim vrstama datotečnih sustava:
30.5 . Popis često korištenih datotečnih sustava .

Osnovne značajke datotečnih sustava
Osnovne značajke koje se očekuju od svih datotečnih sustava na Linuxu odnose se na performanse, stabilnos t, sigurnost i
fleksibilnost u upravljanju podacima. Iako ra zličiti d atotečni sustavi mogu imati dodat ne specifične značajke, svi bi trebali
osigurati osnovne funkcionalnosti koje omogućuju sigurno i učinkovito rukovanje datotekama.

Najvažnije značajke koje bi svaki moderni datotečni sustav na Linuxu trebao imati su sljedeće :
• Podrška za osnovne operacije nad datotek ama – datotečni sustav mora omogućiti temeljne operacije s datotekama i
direktorijima, uključujući:
o Stvaranje, brisanje, preimenovanje i kopiranje datoteka i direktorija.
o Čitanje i zapisivanje podataka unutar datoteka.
o Premještanje datoteka i direktorija unutar datotečnog sustava.

• Hijerarhijska struktura di rektorija – svi datotečni sus tavi na Linuxu koriste hijerarhijski sustav direktorija. To znači da
korisnici mogu orga nizirati datoteke u direktorije ( mape ) koje mogu sadržavati druge direktorije i datoteke, omogućujući
strukturiranu organizaciju podataka.
• Metapodaci o datotekama – svi datotečni sustavi trebali bi pohranjivati osnovne metapodatke o datotekama, uključujući:
o Veličinu datoteke.
o Vlasništvo (vlasnika i grupu) nad datotekom i direktorijem.
o Dozvole odnosno ovlasti:
 Standardne ovlasti ( read / write / execute ) za vlasnika, grupu i sve o stale korisnike.
 Access Control Lists ( ACL ) – mnogi moderni datotečni sustavi omogućuju korištenje ACL -ova za detaljniju
kontrolu pristupa, omogućujući određivanje specifičnih dozvola za različite korisnike ili grupe. Dok oni
napredniji podržavaju i još finiju kontrolu ( pr. atributi i capabilities značajk e ).
o Vremenske oznake o stvaranju, izmjenama i pristupa datotekama.
o Različite vrste datoteka, poput : običn e datoteke, direktorija , simboličk og linka, specijalne datoteke i sl.

• Podrška za velike datoteke i particije – moderna uporaba diskovnih sustava zahtijeva da dat otečni sustavi podržavaju
velike datoteke i particije (pr. minimalno veličine terabajta [TB] ili više).

48

• Journaling – većina modernih datotečnih sustava koristi journaling kako bi se spriječio gubitak podataka u slučaju pada
sustava. Journaling omogu ćava zapisivanje promj ena prije nego št o se stvarno up išu na disk, č ime se smanjuje mogućnost
oštećenja datoteka i ubrzava oporavak nakon kva rova.

• Integracija s LVM-om ( Logical Vol ume Manager ) – mnogi Linux sustavi koriste LVM za fleksibilno upravljanje diskovnim
particijama. Datotečni sustav mora biti kompatibilan s LVM- om , omogućujući jednostavno proširenje ili smanjenje prostora
na disku bez ponovnog formatiranja ili gubitka podataka.

• Podrška za simboličke i hard linkove – simbolički ( soft ) i hard linkovi su ključne značajke za Linux datotečne sustave
pa se očekuje mogućnost njihovog korištenja .

• Oporavak od oštećenja – svaki datotečni sustav bi trebao imati mehanizme za oporavak od grešaka i oštećenja podataka,
što uključuje:
• Konzistentnost podataka – nakon pada sustava, datotečni sustav mora moći vratiti integritet podataka, što je često
omogućeno korištenjem journaling-a .
• Alate za provjeru i popravak – datotečni sustavi trebaju imati alate poput fsck ( file system check ) koji mogu
provjeriti i popraviti oštećenja podataka na disku.

• Podrška za različite kategorije uređaja - datotečni sustavi na Linuxu moraju biti fleksibilni i podržavati različite vrste
uređaja poput: tvrdih/mehaničkih diskova ( HDD ), SSD i NVMe diskova, USB uređaja, RAID sustava i slično.

• Performanse i optimizacija – osnovni datotečni sustavi na Linuxu moraju biti optimizirani za rad s različitim vrstama
opterećenja uz:
• Nisku fragmentaciju – datotečni sustav bi trebao mi nimizirati fra gmentaciju datoteka kako bi poboljšao
performanse.
• Efikasnu upotrebu prostora – sustav mora pametno raspoređi vati prostor na disku, osobito kod rada s malim
datotekama.

• Podrška za snapshote, kompresiju i deduplikaciju – napredni datotečni sustavi če sto podržavaju stvaranje snapshota ,
koji omogućuju spremanje trenutnog stanja datotečnog sustava. Neki moderni Linux datotečni sustavi, poput Btrfs i ZFS ,
nude i kompr esiju podataka, što smanjuje zauzeće prostora na disku. Također , ako postoji, deduplicacija omogućava
uklanjanje dupliciranih podataka radi bolje iskoristivosti diskovno g prostora.

Logička podjela datotečnih sustava
Datotečne sustave u grubo možemo podijeliti u nekoliko logičkih kategorija:
• Diskovni datotečni sustavi – ova kategorija obuhvaća najčešće korištene datotečne sustave koji se nalaze na fizičkim
diskovima poput hard diskova (HDD), solid-state diskova (SSD) i drugih memorijskih uređaja. Predstavnici ovakvih
datotečnih sustava su: EXT2/3/4 , XFS , NTFS , Btrfs , ZFS i slični.

• Mrežni datotečni sustavi – ovi datotečni sustavi omogućuju dijeljenje datoteka preko mreže, omogućavajući pristup istim
podacima na udaljenim lokacijama za više korisnika ili sustava. Neki od predstavnika ove skupine su: NFS ( Net work File
System ), SMB/CIFS ( Server Message Block ), GlusterFS i Ceph.

• Datotečni sustavi za specijalizirane medije – ova kategorija obuhvaća datotečne sustave dizajnirane za specifične vrste
medija, kao što su SSD -ovi, flash memorije ili optički diskovi. Primjeri su: F2FS ( Flash-Friendly File System ): Optimiziran
za flash memoriju te exFAT koji je razvijen za korištenje na flash pogonima, te omogućuje int eroperabilnost između
različitih operativnih sustava. Sljedeći primjer je ISO 9660 koji je standard za optičke diskove odnosno CD , DVD i Blu -
Ray medije.

• Datotečni sustavi za pohranu u memoriji (In -Memory File Systems) – ovi datotečni sustavi koriste RAM memoriju
umjesto diskova za pohranu podataka. Obično se koriste za privremenu pohranu zbog visoke brzine, ali i činjenice da se
podaci gube pri gašenju sustava. Jedan od primjera jest tmpfs ko ji pohranjuje privremene d atoteke u RAM memoriju. Dok
je drugi primjer ove kategorije ramfs koji radi slično tmpfs-u , ali bez mogućnosti ograničenja veličine.

• Virtualni datotečni sustavi – oni omogućuju prikaz podataka koji nisu fizički pohranjeni na disku, već su generirani u
stvarnog vremenu ili predstavljaju informacije o samom sustavu. Uobiča jeno se u Linuxu nalaze unutar tz v. VFS sloja
datotečnog sustava koji je pohranjen u RAM memoriji. Jedan od njih je procfs a on omogućuje pristup informacijama o
pokrenutim procesima i nekim komponentama sus tava , a drugi je sysfs . Sysfs omogućuj e pristup kernel modulima i
informacijama o hardveru , kao i postavkama sustava na najnižoj razini .

• Copy-on- Write datotečni sustavi ( COW ) – ovi sustavi koriste C opy-on-Write mehanizam, gdj e se prilikom modifikacije
podataka stvara kopija postojeći h podataka umjesto da se direktno mijenjaju, čime se povećava sigurnost te omogućuju
funkcije poput snapshota . Jedan od ovih predstavnika jest Btrfs , a on ima ugrađen u podršk u za COW s naprednim
značajkama. Drugi primjer je ZFS koji je poznat po COW funkcionalnosti, za štiti podataka i mnogim dodatnim i naprednim
značajkama.

• Distribuirani datotečni sustavi – sustavi su to koji omogućuju pohranu podataka na više čvorova odnosno poslužitelja,
često u cloud ili okruženju podatkovnih centara (engl. Data center ). Podaci se distribuiraju na više fizičkih lokacija kako
bi se postigla redundancija i visoka dostupnost. Neki od predstavnika ove kategorije su:
o Ceph – visoko distribuirani sustav (na stotine pos lužitelja i desetk e tisuća diskova) za pohranu podataka s podrškom
za visok stupanj skalabilnosti, redundancije i dostupnosti .
o GlusterFS - Omogućuje distribuiranu pohranu podataka na više p oslužitelja.
o HDFS ( Hadoop Distributed File System ) - dizajniran za masovno pohranjivanje podataka u velikim klasterima.

• Kriptirani datotečni sustavi – ovi sustavi omogućuju kriptiranje (šifriranje) podataka kako bi se povećala sigurnost
pohranjenih datoteka. Enkripcija osigurava da samo autorizirani korisnici mogu pristupiti takvim podacima.

55

Putanje do datoteka i PATH varijabla
Putanja do datoteke označava lokaciju datoteke ili direktorija u datotečnom sustavu .
Putanja do neke datoteke unutar određenog direktorija ( mape ) u kojoj se nalazi, može biti:
• Apsolutna, odnosno ona koja počinje od vršnog direktorija ( / ) poput primjerice datoteke messages , kojoj je tada
apsolutna putanja : /var/log/messages .
• Relativna, odnosno ona koja počinje od trenutnog direktorija u kojem se nalazimo. Primjerice, ako se nalazimo u
direktoriju /var tada nam je putanja do navedene datoteke: log/messages .

Važno je razumjeti kako na razini cijelog susta va postoji posebna shell varijabla imena PATH unutar koje su definirane putanje
do svih važnijih direktorija u kojima se nalaze izv ršne datoteke odnosno naredbe , al i i skripte koje su važne za funkcioniranje
cijelog sustava, kao i datoteke koje su potrebne z a pokretanje raznih programa.

Naime u tre nutku kada že limo pokrenuti neki program ili naredbu odnosno shell ili neku drugu skriptu, sustav prvo pregledava
je li ona dostupna u putanji direktorija koja je navedena u varijabli PATH .
Dakle provjerava se , nalazi li se ta izvršna dat oteka odnosno program , naredba, shell ili neka druga skripta koju želimo pokrenuti ,
u nama dohvatljivoj putanji direktorija . Ako se ne nalazi, sustav ne može doći do nje i s â mim time ju ne može niti pokrenuti.
Ako se ipak nalazi, to znači da se izvršna datoteka (program/aplikacija/skripta) može i pokrenuti.

Standardna putanja ( PATH ) za root korisnika (administratora) za izvršne datoteke je sljedeća :
/usr/local/sbin
/usr/local/bin
/sbin
/bin
/usr/sbin
/usr/bin
Varijabla PATH se može definirati u konfiguracijskim dato tekama poput /etc/pr ofile i drugima specifičnim za vašu ljusku ,
ali i unutar svake skriptne d atoteke; primjerice unutar shell skripte. Nove putanje direktorija se u ovoj varijabli odvajaju s
dvotočkom ( : ) .

Pogledajmo primjer definiranja ove varijable za korisnika root odnosno pogledajmo kako ona izgleda:
PATH=/usr/bin:/bin:/sbin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin

Vrijednost ove varijable za trenutnog korisnika možemo vidjeti sa naredbama set , env i echo $PATH .

Dakle ispis ove varijable i njene vrijednosti možemo dobiti s pozivanjem naredbi:
set
ili
env
ili
echo $PATH

Za postavljanje ove sistemske varijable pogledajte poglavlje:
6.2.2 . Sistemske ( Environment ) varijable i postavke terminala.

Sažetak upotrebe PATH varijable:
• PATH varijabla sadrži popis direktorija, razdvojenih dvotočkama ( : ).
• Kada korisnik pokuša izvršiti naredbu, naredbeni redak (naredben a ljuska/ shell ) pretražuje direktorije u PATH
varijabli, redom, tražeći izvršnu datoteku s imenom naredbe.
• Ako naredbeni redak pronađe izvršnu datoteku u jednom od direktorija naveden ih u PATH varijabli, ona se pokrene.
• Ako naredbeni redak ne pronađe izvršnu datoteku ni u jednom od direktorija, kor isnik će dobiti poruku o pogrešci.

PATH je okolišna ( environment ) varijabla koja sadrži popis direktorija gdje l juska (shell, npr. Bash) traži izvršne
programe kada korisnik unese bilo koju naredbu.

Izvori informacija: [ 106 ],[K-1],[K-12].

56

4.3. Ovlasti ( permissions & modes )
Svaki direktorij kao i svaka datoteka, imaju određene ov lasti ( engl. permissions ). Sjetimo se da smo nakon prijav ljivanja na
sustav (tzv. logiranja ) , prijavljeni kao određeni korisnik koji pripada određenoj kor isničkoj grupi. Taj ili bilo koji drugi korisnik
i njegova pripadajuća grupa se uz druge ovlasti zapisuju uz svaku datoteku i direktorij zbog ograničavanja prava pristupa na njih .
Naime svaki puta kada se kreira neka datoteka ili direktorij , za nju se zapisuju i njene ovlasti, a to su :
• Tko je njen vlasnik ( owner ).
• Kojoj korisničkoj grupi pripada ( group ) [ovdje se zapisuje primarna korisnička grupa korisnika] .
• Te ovlasti za sve ostale korisnike koji nisu vlasnici ili ne pripadaju definiranoj grupi (Engl. All other users ).

Ovlasti prema vlasniku (i vlasničkoj grupi) se mijenjaju s naredbom: chown (o njoj kasnije , a potom i u poglavlju: 4.4.1. ).
Stoga je p rema vlasništvu datoteke ili direktorija, moguće definirati :
• Tko im je vlasnik ( owner ).
• Kojoj korisničkoj grupi pripada ju ( group ).
• Za sve ostale, koji nisu u kategoriji vlasnika ili primarne grupe ( all other users ).
Osim toga, definiraju se i prava pristupa i rada s datotekama i direktorijima (mapama), koja se vežu za : vlasnika, korisničku
grupu i sve ostale. Ovlasti se mijenjaju s naredbom: chmod .
Prema pravima pristupa nad datotekama i direktorijima (mapama), mo guće je definirati tko ima pravo:
• Č itanja (engl. r ead ) [ r ].
• Pisanja (engl. w rite ) [ w ].
• I zvršavanja odnosno pokretanja (engl. e x ecute ) [ x ].

Za datoteke vrijede sljedeća pravila
Za datoteke, p ravo čitanja [ r ] omogućava s âmo pr avo čitanja određene datoteke , ali ne i njeno mijenjanje. Pravo čitanja datoteke
je potrebno i za njeno kopiranje, jer se prilikom kopiranja, kopira njen sadržaj. Dok pravo pisanja [ w ] omogućava i mijenjanje
sadržaja dat oteke, što uključuje i upo trebu operatora za redirekci ju ( > ili >> ). Za razliku od Windows operativnih sustava, u
UNIX/Linux sustavima se pravo izvršavanja odnosno pokretanja datoteke dodjeljuje tako što se određenoj datoteci dodaje pravo
izvršavanja [ x ] (engl. execute ), bez obzira na ekstenziju datoteke. U Windows svijetu d atoteka mora i mati ekstenziju poput
primjerice .exe kako bi bila iz vršna odnosno da bi se mogla pokrenuti. Dok u UNIXu ili Linuxu to nije potrebno, dovoljno je
samo postaviti pravo izvršavanja odnosno execute ovlast na bilo koju datoteku, n aravno definirano za: vlasnika, grupu ili za sve
ostale, koji će ju smjeti pokr enuti odnosno izvršavati. Od tog trenut ka ova datoteka postaje izvršna, neovisno o njenoj ekste nziji.

Za direktorije vrijedi sljedeće
Pravo izvršavanja [ x ] važno je i za direktorije je r bez njega nije moguće: promijeniti rad ni direktorij u (ovaj) direktorij (primjerice
s naredbom cd ), pokrenuti programe i skripte unutar tog direktorija ili pregledavati sadržaj dire ktorija (primjerice s naredbom
ls ). Pravo čitanja [ r ] omogućuje čitanje sadr žaja direktorija (pri mjerice s naredbom ls ). Dok prav o zapisivanja [ w ] omogućuje:
kreiranje novih datoteka u direktorij, kopiranje dat oteka u direktorij (primjerice s naredbom cp ), ili micanja (primjerice s
naredbom mv ) odnosno brisanja datoteka unutar direktorija (primjerice s nar edbom rm ).

Napredne ovlasti
Osim standardnih ovlasti ( r , w i x ) postoje i napredne ovlasti , a to su :
• Set UID (oktalno 4 , simbolički s ili S ) – postav lja “ User ID ” što omogućava trenutnom korisniku da dobije prava koja
zapravo ima sâ mo vlasnik određene datoteke.
• Set GID (oktalno 2 , simbolički s ili S ) – postavlja “ Group ID ” odnosno omogućava trenutnom korisniku da dobije prava
koja zapravo ima sâ mo vlasnička grupa nad određenom datotekom.
o Set UID i Set GID ovlasti se postavljaju kada je potrebno dozvoliti korisnicima koji inače nemaju ovlasti nad
određenim izvršnim datotekama , kako bismo dobili ovlasti koje ima njihov vlasnik ( Set UID ) ili njihova vlasnička
grupa (Set GID).
• Sticky bit (okta lno 1 , simbolički t ) - služi za označavanje datoteka ili direktorija (mapa) koji ne smiju biti obrisani,
odnosno ovo je ovlast pomoću koje ih može obrisati s âmo vlasnik ili root korisnik.

B ilo koji korisnik koji primjerice pokrene izvršnu datoteku koja ima postavljen Set UID ili Set GID dobiva ovlasti njenog
vlasnika tj. njegovog UID - a ( User ID – korisnički identifikacijski broj) ili njegove pripa dajuće grupe GID -a ( Group ID –
identifikacijski broj grupe ) . To je i potencijalan sigurnosni problem, jer u slučaj u malicioznih radnji, problemati čni korisnik
dobiva prava vlasnika ( UID ) ili vlasničke grupe ( GID ) od pripadajuće , a obično izvršne datoteke.
S druge strane neki programi koji su u širokoj upotrebi, moraju biti pokrenuti s višim ovlast ima od ovlasti “ob ičnih” korisni ka, a
obično s ov lastima root korisnik a. S tog a se u razvoju ovakvih programa, posebna pažnja posvećuje sigurnosti. Neki od programa
koji se moraju izvršavati sa SETUID ovlastima su: su , mount , umount , sudo , passwd i slični.

Pogledajmo kako počevši od root direktorija ( / ) pronaći sve datoteke koje imaju postavljen SETUID , pomoću naredbe find :
find / -xdev -type f -perm /4000

Pogledajmo kako počevši od root direktorija ( / ) pronaći sve datoteke koje imaju postavljen SETGID , pomoću naredbe find :
find / -xdev -type f -perm /2000

Izvori informacija: [ 107 ],[ 108 ],[ 1598 ], man 5 acl,man find .

57

Što nam govore ovlasti
Vratimo se na osnovne ovlasti. Ovlasti nad direktorijem ili datotekom se čitaju od lijevo na desno i kod izlistanja dat oteka il i
direktorija se nalaze s lijeve strane nakon prve oznake koja označava radi li se o datoteci ( oznaka - ) ili direktoriju (oznaka d ) .
Izlista jmo vršno stablo direktorija ( root / ) , a po gledat ćemo samo /etc direktorij pomoću naredbe ls na sljedeći način:
ls -al

d rwxr-xr-x 20 root root 4096 Jun 13 12:53 /etc

Sada pogledajmo samo ove oznake s lijeve strane ( zatamnjeno )
d rwx r-x r-x .. .. . . .. .. . . /etc

Prvi znak s lijeve strane (ovdje je to slovo d ) ima posebno značenje te predstavlja direktorij.
Za detalje o direktorijima (mapama) pogledajte poglavlje :
4.2 Direktoriji (mape) i datoteke .

Nakon prvog znaka ( - ili d ) koji smo objasnili, u konkretnom primjeru slijede naredni nîzovi:
• Prvi nîz od tri znaka (oktet) čine oznake za vlasnika ( owner ); u ovom slučaju su to prve tri oznake rwx .
• Drugi nîz od tri znaka (oktet) čine oznake za grupu ( group ); u ovom slučaju je to drugi nîz od r-x .
• T reći n îz od tri znaka (oktet) čine oznake za sve ostale ( others ); u ovom slučaju je to treći n îz od r-x .

Postoje i dodatne ovlasti koje se tiču SELinux sustava pa stoga pogledajte poglavlje:
28.2 . SELinux sustav.

Međutim, p ostoji i izn imka za zadnj i znak u nutar svakog okteta. Naime, na mjestu znaka x ( execute ) odnosno prava
izvršavanja/pokretanja , mogu stajati sljedeći znakovi koji imaju posebnu svrhu odnosno namjenu .
Dakle iznimke mogu biti znakovi :
• s ili S ili t , i to svaki prema svom značenju:
o Setuid ( s ) odnosno ovlast posebnog izvršavanja kada se program izvršava s ovlastima ne onoga koji ga pokreće ,
već vlasnika programa .
o Setgid ( s ) odnosno ovlast posebnog izvršavanja kada se program ne izvršav a s ovlastima vlasnika pr ograma poput
setuid , već s ovlastima korisničke grupe u kojoj je vlasnik koji ga je kreirao. Setgid se može postaviti i na direktorije
(mape).
• Sticky ( t ) - što znači da preimenovanje ili brisanje datoteke može raditi samo vl asnik ( owner ) iste.

Pogledajmo datoteku /usr/bin/passwd s vidljivo postavljen im setuid ( s ) na poziciji ovlasti za vlasnika ( root konkretno ):
-rw s r-xr-x 1 root root 59680 May 17 2017 /usr/bin/passwd

To za setuid datoteku odnosno naredbu passwd znači, da kada ju bilo tko pokrene, ona će se pokrenuti ne sa ovlastima onoga
tko ju pokreće već sa konkretno ovlastima vlasnika ove datoteke , a to je root korisnik ( administrator UNIX/Linuxa-a).

Pogledajmo i datoteku /usr/bin/wall u kojoj je postavljen setgid ( s ) na poziciji ovlasti za grupu vlasnika ( tty konkretno ):
-rwxr- s r-x 1 root tty 27448 Mar 7 2018 /usr/bin/wall

To za setgid datoteku odnosno konkretnu naredbu wall znači, da kada ju bilo tko pokrene, ona će se pokrenuti ne s ovlastima
korisničke grupe onoga tko ju pokreće već konkretno s ovlastima vlasničke grupe ove datoteke . U ovom primjeru to je grupa
tty koja ima prava rada odnosno pristupa te rminalima Linuxa, pa može poslati tekstualnu poruku na sve virtualne terminale i
konzole svih logiranih korisnika na sustav. Izlistavanjem s naredbom ls vidljive su nam simboličke oznake ovlasti ( r , w , x ).
Osim simboličkih oznaka, moguće je mijenjati ih i na druge načine.

Usporedba drugih metoda označavanja ovlasti vidljiva je u ispisu u tablici :

Binarna oznaka ( rwx )

Ovlasti

Simbolička notacija

Oktalna notacija

111

Sve ovlasti (r+w+x)

-rwxrwxrwx

0777

110

Čitanje i pisanje (r+w)

-rw-rw-rw-

0666

101

Čitanje i izvršavanje (r+x)

-r-xr-xr-x

0555

100

Samo čitanje (r)

-r--r--r--

0444

011

Pisanje i izvršavanje (w+x)

-wx-wx-wx

0333

010

Samo pisanje (w)

-w--w--w-

0222

001

Samo izvršavanje (x)

--x--x--x

0111

000

Nema ovlasti ( prazno )

----------

0000

Obratite pažnju na oktalne oznake jer sve počinju s nula (0).
Ova početna nula označava posebne ovlasti o kojima smo govorili, a koje ćete dodatno upoznati kroz primjere koji slijede .

58

Kao root (administrator) kreirali smo datoteku test s naredbom: touch test . Pogledajmo ju s naredbom:
ls -al test
-rw-r--r-- 1 root root 24 2014-07-03 09:54 test
Vidimo kako vlasnik ( root ) ima pravo odnosno ovla sti: čita nja ( r ) i zapisiva nja ( w ), a svi koji pripadaju grupi ( root ) imaju
samo pravo čita nja ( r ) kao i svi ostali koji jedino imaju pravo čitati ( r ) ovu datoteku.

Na koje načine možemo mijenjati ovlasti ?

Ovlasti možemo mijenjati na sljedeće načine:
1.Pogledajmo opisno definiranje ili mijenjanje ovlasti , koje koristi sljedeće ključne oznake
• Prvo definiramo za koga ćemo mijenjamo ovlasti; pri tome:
o a – označava sv e: i vlasnik i grupa i svi ostali.
o u – označava sâmo vlasnika (engl. owner : user ).
o g – označava grupu (engl. group ).
o o – o značava sv e ostale (engl. other ).
• Potom slijedi operator; dodajemo li ili oduzimamo ovlasti;
o + znači kako dodajemo ovlasti.
o - znači kako oduzimamo ovlasti.
• Te slijedi naputak koje ovlasti mijenjamo:
o r – ovlast čitanja (engl. read ).
o w – ovlast pisanja (engl. write ).
o x – ovlast izvršavanj a/pokretanja (engl. execute )
• I konačno možemo koristiti i p osebne ovlasti
o s – označava SUID ili GUID: ovisno da li se nalazi pod “ user ” ili “ group ” dijelom .
o t – označava takozvani Sticky bit.

a .) U sljedećem primjeru omogućimo svima ostalima ( o ther ) (ne o dnosi se na vlasnika i vlasničku grupu) mogućnost i zvršavanja
odnosno pokretanja datoteke test . To ćemo postići pomoću naredbe chmod na sljedeći način:
chmod o+x test

Pogledajmo sada što smo dobili . Konkretno smo dobili oznaku x na kraju oznaka ovlasti , koja datoteci daje pravo izvršavanja :
ls -al

-rw-r--r- x 1 root root 24 2014-07-03 09:54 test*

2. Oktalno definiranje ili mijenjanje ovlasti. Pre ma tablici, za svakog korisnika, imamo broje ve koji označavaju : pravo
čitanja : r (4), zapisivanja: w (2) ili izvršavanja : x (1) .
Stoga prema tablici imamo sljedeće ovlasti (opisno i brojčano), pa možete vidjeti v ezu među njima :

Pogledajmo i pretvaranje simboličkih u oktalne oznake, prema prethodnoj tablici:

1

2

3

(2+1)

4

5

(4+1)

6

(4+2)

7

(4+2+1)

x

w

w+x

r

r+x

r+w

r+w+x

To znači da, ako želimo postaviti ovlast : w + x ( write i execute ), da će to biti vrijednost 3 ; jer se zbrajaju: 2 ( w ) i 1 ( x ).

Tada se povezivanje odnosno mapiranje u oktalni prikaz označava za svakog od:
• Vlasnika (engl. owner/user).
• Gr upe (engl. group ).
• I svih ostal ih koji nisu vlasnik ili unutar grupe (engl. other users ).

Pri tome, primjerice 755 znači:
• 7 – (prvi broj) – za vlasnika ( owner ) ; što znači: r+w+x
• 5 – (drugi broj) – za grupu ( group ) ; što znači: r+x
• 5 – (treći broj) – za sve ostale ( other users ) ; što znači: r+x

Odnosno opisno 755 znači slijedeće :
• 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 ju prava čitanja ( r ) i izvršavanja/pokretanja ( x ).

r

w

x

4

2

1

59

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 koji nisu vlasnik ili unutar vlasničk e grupe ( others ), da mogu samo čitati i pokretati: r+x ( 5 ).

Napravimo ovakvu promjenu ovlasti na datoteci test s naredbom chmod na slijedeći način:
chmod 755 test

Sada pogledajmo kako izgledaju novo napravljene ovlasti :
ls -al

-rwxr-xr-x 1 root root 24 2014-07-03 09:54 test
Što znače ove ovlasti:
• rwx – vlasnik ( root ) može čitati ( r ), zapisivati ( w ) i izvršavati/pokretati datoteku ( x ).
• r-x – vlasnička grupa ( root ) može čitati ( r ) i izvršavati/pokretati datoteku ( x ).
• r-x – svi ostali mo gu čitati ( r ) i izvršavati/pokretati datoteku ( x ).

Podsjetimo se što znače ovlasti kod direktorija (jer su različite u odnosu na datoteke)

• r – read (čitanje) – daje mogućnost popisa imena datoteka u direktoriju ( ls ), ali ne i vidjeti detalje (npr. veličinu,
ovlasti, vlasnika) ako nema mo ovlast x za direktorij.
• w – write (zapisivanje) – daje mogućnost promjene strukture direktorija : stvaranja novih datoteka ili poddirektorija
( touch , mkdir ) , brisanja datoteka ( rm ) i preimenovanja ( mv ), ali n e daje mogućnost mijenjanja sadržaja d atoteka jer to
ovisi o ovlastima datoteka unutar direktorija.
• x – execute (izvršavanje) – daje mogućnost ulaska u direktorij ( cd ). Omogućuje pristup datotekama unutar direktorija
ako zna mo njihova imena, čak i bez r . Dakle moguće je otvoriti ili obrisati d atoteku ako imamo odgovarajuće ovlasti na
samoj datoteci. Bez x , ne može mo ući u direktorij ni ti pristupiti datotekama unu tar njega, čak i ako zna mo ime datoteke.

P romjene vlasnika i vlasničke grupe nad datotekom ili direktorijem
U Linuxu svaka datoteka i direktorij ima pridružene atribute koji određuju tko ih smije čitati, m ijenjati ili izvršavati.
Osnovna tri elementa tih atributa po pitanju vlasništva su tko je:
• Vlasnik ( owner ) te koja je vlasnička grupa ( group )
• Te svi ostali ( others ).

Dakle u Linuxu se chown koristi za promjenu vlasnika i/ ili grupe za datoteke i dire ktorije. Za njeno korištenje je obično potrebna
administratorska ovlast ( root ili sudo )
Osnovne opcije i prekidači naredbe chown su sljedeći:
• -R – rekurzivno, mijenja vlasništvo za direktorij i sve poddirektorije/datoteke.
• -v – verbose , ispisuje što je promijenjeno.
• -c – change , ispisuje samo kada dođe do stvarne promjene.
• -f – force , ne ispisuje poruke o pogreškama.
• --reference= DATOTEKA – umjesto ručnog navođenja korisnika/grupe, postavlja vlasništvo kao kod zadane d atoteke.

Promijenimo vlasnika datoteke dokument.txt u ivan i vlasničku grupu u studenti :
Datoteka koju smo kreirali kao root korisnik (Linux administrator), kreira se tako da joj je vlasnik root , te je korisnička
grupa (primarna) grupa koja se također zove root :
Pogledajmo ovu datoteku:
ls -l dokument.txt
-rw-r--r-- 1 root root 10240 Oct 5 12:30 dokument.txt
 Upravo to i vidimo root korisnik je vlasnik, a vlasnička grupa je također root.

S obzirom na to da želimo dodati prava zapisivanja novom vlasniku ivan (korisnik) te grupi korisnika koja se zove
studenti , moramo prvo promijeniti standardne ovlasti:
chmod g+w dokument.txt

Sada imamo sljedeće stanje (pogledajte novu ovl ast zapisivanja zagrupu)
ls -l dokument.txt
-rw-rw-r-- 1 root root 10240 Oct 5 12:30 dokument.txt
 Prvi rw- je za vlasnika, a drugi rw- je za grupu.

I sada promi je nimo njenog vlasnika i vlasničku grupu u jednom koraku:
chown ivan:studenti dokument.txt

Pogledajmo ovu datoteku sada:
ls -l dokument.txt
-rw-rw-r-- 1 ivan studenti 10240 Oct 5 12:30 dokument.txt
 Sada vidimo da je novi vlasnik ivan te da je vlasnička grupa studenti .
 To znači da vlasnik i grupa imaju pravo zapisi vanja (zbog rw- ).

60

Napredno o ovla stima (r/w/x)

Zapravo kod oktalnog dodjeljivanja ovlasti ispred prva tri broja u vijek stoji nula (0), koja označava posebne ovlasti.
Tablica prikazuje posebne ovlasti (koje su inače nula [ 0 ]) koje se izračunavaju slično kao i obične , prema sljedećem pravilu:

Set UID

Set GID

Sticky bit

4

2

1

Proširena tablica sa ovlastima na kraju izgleda ovako:

7

(4+2+1)

6

(4+2)

5

(4+1)

4

3
(2+1)

2

1

1

2

3

(2+1)

4

5

(4+1)

6

(4+2)

7

(4+2+1)

Set UID + Set GID
+ Sticky bit

Set UID
+ Set GID

Sticky bit +
Set UID

Set
UID

Sticky bit
+ Set GID

Set
GID

Sticky
bit

x

w

w+x

r

r+x

r+w

r+w+x

Dakle ako za ovlasti koje smo postavili u primjeru od gore ( 755 ) želimo dodati i Set UID tada će to oktalno biti: 4755 .
chmod 4755 test

A i sto smo mogli napraviti i simbolički na sljedeći način:
chmod u+s test

Pogledajmo što smo sada napravili s gornjim naredbama :
ls -al
-rw s r-xr-x 1 root root 0 Mar 21 20:13 test
Vidljivo je da je treća ovlast za vlasnika iz x postala s . To znači kako je postavljen Set UID za navedenu datoteku, za vlasnika.

Osim toga, moguće je i oduzeti primjerice izvršni ( execute) dio ovlasti za vlasnika ( u =Engl. User ) , što ćemo napraviti sa :
chmod u-x test

Pogledajmo sada novo stanje iste datoteke :
ls -al

-rw S r-xr-x 1 root root 0 Mar 21 20:13 test
Sada se malo slovo s promijenilo u veliko S . Dakle sada imamo datoteku koja nije izvršna , ali ima postavljen SUID .

Vratimo sve na početno stanje sa sljedećom naredbom :
chmod 0755 test

Pogledajmo i kako sve sada izgleda:
ls -al

-rwx r-x r-x 1 root root 0 Mar 21 20:13 test
Sada vlasnik ima rxw prava, grupa r-x prava te svi ostali imaju r-x prava.
Dakle i vlasnik i grupa i svi ostali mogu či tati i pokretati ovu datoteku ( r i x ), ali s amo vlasnik ju može uređivati (editirati)
odnosno mijenjati ( w ).

Postavimo i GUID prava; dakle prava koja se primjenjuju na gru pu.
chmod g+s test

Pogledajmo kako to sada izgleda:
ls -al

-rwxr- s r-x 1 root root 0 Mar 21 20:13 test
Vidljiva je slična situacij a kao kod SUID a , ali na poziciji za grupu. Umjesto grupnih ovlasti r-x sada imamo r- s .

Dodatno i ovdje je moguće maknuti “ Execute ” dio ovlasti za grupu, ali da ostane G UID ovlast, na sljedeći način:
chmod g-x test

Pogledajmo kako i to izgleda:
ls -al

-rwxr- S r-x 1 root root 0 Mar 21 20:13 test
Sada ponovno , prema ovlastima grupe imamo umjesto malog slova s veliko slovo S .

61

Gdje se u praksi koriste posebne ovlasti?
U slučajevima kada obični korisnik, tijekom pokretanja nekog programa mora, sâmo za potrebe pokretanja tog programa, imati
v eće (snažnije) ovlasti; obično ovlasti root korisnika (UNIX/LINUX Administrator ), koriste se ove (posebne) ovlasti .
Ova potreba postoji kod raznih mrežnih naredbi, koje “obični” korisnik ne bi mogao niti pokrenuti je r nema prava korištenja
određenih resursa sustava. Najjednostavniji školski primjer j e naredba ping za testiranje dostupnosti računala na mreži.

Pogledajmo ovlasti ove naredbe, koja se inače nalazi u direktoriju /bin/ . Pogledajmo ju s naredbo m ls na sljedeći način:
ls -al /bin/ping

-rw s r-xr-x 1 root root 36476 Jul 23 2015 /bin/ping
Vidljivo je kako je postavljen SUID ( X + SUID ) na trećoj poziciji za vlasnika (k oji je u ovom slučaju korisnik root ) stoji malo
slovo s . Još kritičniji primjer je naredba passwd s kojom mijenjamo svoju korisničku lozinku (Engl. password ).

Sve lozinke su pohranjene u datoteci /etc/shadow i sâmo root korisnik ima puna prava mijenjanja ove datoteke.

Za detalje pogledajte poglavlje:
7.1.3 Datoteka /etc/shadow.

Pošto svaki korisnik mora imati prava promijeniti svoju lozinku, to znači da bi svaki korisnik morao imati prava pristupa ovo j
datoteci. To u praksi nije u potpunosti tako. Dakle samo root ima puna prava direktnog pristupa ovoj datoteci te pristupa preko
naredbe koja je zadužena za promjenu lozinke (naredbi passwd ) za pojedinog korisnika.
Ovoj naredbi su stoga dodijeljena Set UID prava. Pogledajmo kako ona izgleda :
ls -al /usr/bin/passwd

-rw s r-xr-x. 1 root root 25980 Feb 22 2012 /usr/bin/passwd

Ovdje vidimo oznaku/slovo s na poziciji vlasnika datoteke/programa ( u ovom slučaju root korisnika).
Nadalje ova naredba je pisana tako da ona pri svakom pokre tanju provjerava koji korisnik ju je pokrenuo. Tada ona omogućava
korisniku koji ju je pokrenuo da može mijenjati datoteku /etc/shadow i to sâ mo i isključivo onaj dio (redak) koji se tiče
korisnika koji ju je pokrenuo.
Konkretno on može mijenjati samo jedan red ak u koje m je pohranjena lozinka za trenutnog korisnika, i to stupac u tom re tku u
kojem je stvarno pohranjena njegova lozinka.
To se upravo i događa kod pokretanja ove naredbe, koja se zbog postavljenog Set UID prava pokreće sa root pravima odnosno
ovlastima administratora ( root ) .

Još “ posebniji “ slučajevi
Moguće je dodijeliti Set GID ovlasti i na direktorije (mape) s naredbom chmod g+s .
S ovime dobivamo mogućnost da novo kreirani direktoriji nasljeđuju Set GID postavljeni bît.

To znači kako će svaka novo kreirana datoteka ili p ôddirektorij i s ve datoteke u njemu, n aslijediti mogućnost korištenja d atoteka
s posebnim ovlastima od grupe čiji je Set GID postavljen.
Ova mogućnost vrijedi s âmo za sve nove datoteke koje su kreirane nakon postavljanja Set GID na određeni direktorij.

U slučaju potrebe kada određenom postojećem direktoriju (i svim postojećim datotekama unutar njega, nasljeđivanjem) želimo
postav iti Set GID ovlasti, potrebno je napravit i sljedeće:

Primjer 1 - upotrebom naredbe: find s kojom u pretrazi tražimo direktorij ( -type d ) i potom mijenjamo ovlasti :
find /putanja-do-zeljenog-direktorija/direktorij -type d -exec chmod g+s '{}' \;

Primjer 2 - direktno upotrebom naredbe chmod rekurzivno (prekidač -R ):
chmod -R g+s /putanja-do-zeljenog-direktorija/direktorij

62

Sumirajmo priču o ovlastima odnosno sve do sada naučeno .
Pogledajmo ispis trenutnog direktorija, pomoću naredbe ls na sljedeći način:
ls - alh

drwxr - xr - x 4 root root 168 Oct 30 11:36 .
dr - xr -x ---. 22 root root 4.0K Jan 30 11:23 ..
- rw -r -- r -- 1 root root 2.9K Oct 30 11:36 GNU.projekti.txt
drwxr - xr - x 2 root root 23 Aug 30 09:55 PDF
- rwxrwxrwx 1 root root 259K Sep 13 13:39 kernel - parameters.sh
Malo smo povećali veličinu ispisa, kako bi smo lakše uočili detalje.
Za cijeli sažetak pogledajte sliku 8.1 . s naglaskom na zadnju datoteku iz gornjeg ispisa.
Slika 8.1. Sažeti pogle d na ovlasti.

Izvori informacija: [ 107 ],[ 108 ],[ 109 ],[ 110 ],[K-1],[K-12], man chmod,man chown,man find,man ls,
man 5 passwd.

63

4.4. Rad s direktorijima i datotekama detaljnije
U ovoj cjelini upoznat ćemo se s naprednim detaljima oko dodatnih ovla sti (tzv. atributima ) te mogućnostima izvršavanja
datoteka i programa (tzv. capabilities ). Za početak se prisjetimo ovlasti koje smo spominjali u prethodnoj cjelini, a saželi smo
na prethodnoj stranici. Sada ćemo vidjeti kako izgledaju ovlasti, te što je još vidljivo na razini datoteka i direktorija (mapa) po
tom pitanju . Na slici 9. pogledajmo primjer izlistanja direktorija naziva: PDF .
Slika 9. Ovlasti i drug e oznake datoteka i direktorija (mapa).

Što je ovdje vidljivo?
• ( 1 ) – u ovom dijelu su ovlasti , prethodno objašnjen e; redom za : vlasnika ( rwx ), grupu ( r-x ) i sve ostale ( r-x ).
• ( 2 ) – ovo je b rojčana vrijednost koja govori o broju hard linkova (o njima nešto ka snije):
o Za datoteke je to broj hard linkova na tu datoteku, a ako nema drugih hard linkova na datoteku, tada je to 1 .
o Za direktorije je to broj poddirektorija +2 (ako ih nema onda j e 2, ako sadrži samo jedan podd irektorij onda je vri jednost 3) .
• ( 3 ) – ovdje je zapisano tko je vlasnik datoteke ili direktorija ( u ovom slučaju je to korisnik root ).
• ( 4 ) – ovdje vidimo kojoj korisničkoj grupi pripada direktorij ( u ovom slučaju je to korisnička grupa server ).
• ( 5 ) – ovdje je vidljiva v eličina:
o Z a datoteke ovo je veličina datoteke , standardno izražena u bajtima.
o Z a direktorije , ovo je veličina za meta podatke za datoteke unutar tog direktorija; obično je to standardna veličina bloka
datotečnog sustava . P rimjerice za datotečne sustave ext2/3/4 je to uobičajeno 4096 , ali može i rasti.
• ( 6 ) – ovdje je vidljiv datum zadnje izmjene na datoteci ili direktoriju.
• ( 7 ) – i ovdje na samom kraju je vidljivo ime datoteke ili direktorija (mape).
U cjelinama koje slijede upoznat ćemo se i s drugim detalji ma.

Ovlasti kod kreiranja nove datoteke ili direktorija i naredba umask
Slijedi napredna cjelina!
Kada kr eiramo bilo koji nov i direktorij (mapu) ili datoteku ona se kreira s određenim def iniranim o vlastima prema maski ovlasti ,
a koje se postavljaju s naredbom umask čija standardna vrijednost je obično postavljena na: 022 .

Zadane dozvole za stvara nje mogu se mijenjati pomoću uslužnog programa umask . Važno je razumjeti da umask utj eče samo
na trenutno okruženje ljuske. Postavke umask vrijednosti se mogu spremiti primjerice u datoteku /etc/profile koja se
primjenjuje za sve korisnike sustava tijekom spajanja na sustav . Međutim, ako želite navesti neku drugu vrijednost za svakog
pojedinog korisnika, uredite korisničke konfigurac ijske datoteke ( bash ) ljuske kao što su ~/.bashrc il i ~/.bash_profile .
Važno je znati da korisničke datoteke imaju prednost nad globalnim datotekama. Promijeniti trenutnu vrijednost umask sesije
također možete pokre tanjem umask naredbe nakon čega slijedi postavl janje željen e vrijednost. Trenutno postavljenu masku
ovlasti ( umask ) za kreiranje datoteka i direktorija možemo vidjeti s pozi vanjem naredbe umask bez argumenata:
umask

0022
 vidimo da je umask vrijednost postavljena na 0022 .
Odnosno ako želimo opisne oznake, možemo ju pozvati sa umask -S :
umask -S

u=rwx,g=rx,o=rx

U većini slučajeva je umask vrijednost za root i druge sistemske korisnike 022 dok je za obične korisnike on a postavljena na
002 . Vrijednost umask sadrži bitove dopuštenja koji NEĆE biti p ostavljeni na novostvorene datoteke i direktorije.
Ako maska ima bit postavljen na "1", to znači da će odgovarajuća početna dozvola za datoteku biti onemogućena.
Bit postavljen na "0" u maski znači da će odgovarajuće dopuštenje odrediti progra m i sustav.

Kako se izračunava konačna (efektivna) maska ovlasti od postavljene umask vrijednosti?
Prvo, koristi se standardna tablica za ovlasti, kod koje se vrijednost zbrajaju da bi se dobila konačna vrijednost (tablica dolje) .
Ne za boravimo da je u većini slučajeva umask vrijednost za root i druge sistemske korisnike 022 dok je za obične korisnike
ona obično postavljena na 002 .

64

Efektivna vrijednost ovlasti se dobiva oduzimanjem umaska od maksimalne vrijednosti i to za svaki broj zasebno, jer svaki od
brojeva i predstavlja ovlasti za određenog korisnika ( vlasnik , grupa i ostali ) :
• Z a direktorije : maksimalna vrijednosti za direktorije je 777 , pa je r ačunica: 777 – 022 = 755
• Z a datoteke : maksimalna vrijednosti za datoteke je 666 , pa je r ačunica : 666 – 022 = 644

Oda tle je za prvi broj: 7-0= 7 ; za drugi broj 7-2= 5 i za treći broj 7 -2 je st isto 5 , pa imamo kao rezultat 755 za direktorije, a po
istoj računici imamo vrijednost 644 za datoteke.
T o znači da će kod svakog kreiranja novog direktorija, direktorij bit i kreiran sa ovlastima 755 odnosno rwxr-xr-x , dok će
novokreirane datoteke imati ovlasti 644 odnosno to će biti vidljivo kao: rw-r--r-- .

Pogledajmo primjere.
Za dat oteku /root/podaci/test.sh , tko god joj bio vlasnik, promijeni mo joj vla snika u pero i vlasničku grupu u server
s naredbom chown (Engl. Change ownership ) na sljedeći način :
chown pero:server /root/podaci/test.sh

Moguće je mijenjati vlasnika i vlasničku grupu i rekurzivno; za sve pôd direktorije unutar nekog vršnog direktorija, kao i za sve
datoteke unutar njih, s prekidačem -R naredbe chown . Primjerice promijenimo vlasnika u pero i vlasničku grupu u server
za sve direktorije i poddirektorije, kao i sve datoteke unu tar njih, počevši od vršnog direktorija: /root/podaci/ :
chown -R pero:server /root/podaci/

Postavljanje umask vrijednosti se radi i:
• Za sve sistemske servise, kako je definirano u datoteci: /etc/init.d/functions
• Prilikom kreiranja novih korisnika i njihovih home direktorija, kako je definirano u datoteci: /etc/login.defs
→ Opisano u poglavlju: 7.1.6.2. Datoteka /etc/login.defs.

Promijeni mo ovlasti na datoteci /root/podaci/test.sh da bude i izvršna ( read + write + execute ), samo z a vlasnika iste:
chmod 0744 /root/podaci/test.sh

Ako vam je jednostavnije tako, možemo zadavati i konfigurirati umask vrijednosti i opisno, pri tome imamo klase korisnika:
• u – označava vlasnika (engl. owner ).
• g – označava korisničku grupu koja je vlasnik (engl. group ).
• o – označava sve ostale (engl. other ).
• a – označava sve ovlasti zajedno (engl. all ) [ u + g + o ].

Dok operatori mogu biti neki od sljedećih:
• + – označava da se ovlast u masci dodaje.
• - – označava da se ovlast u masci oduzima (briše).
• = – označava da se ovlasti omoguće za navedene klase korisnika.
I na kraju slijede ovlasti koje koristimo su klasične ovlasti:
• r – označava ovlast za čitanje.
• w – označava ovlast za zapisivanje.
• x – označava ovlast za izvršavanje.

Sintaksa je: umask KLASA-korisnika OPERATOR OVLAST

Primjerice za umask masku 0 022 koja bi opisno bila: ( u=rwx,g=rx,o=rx ) , možemo ju zadati o pisno i ovako:
umask u+w
Ova ovlast konkretno znači da se postavlja maska ta ko da kada se kreiraju datoteke, one imaju dopuštenja (ovlasti) koja dopuš ta ju
pravo pisanja za korisnika (vlasnika datoteke). Ostatak dopuštenja za datoteku ne bi se mijenjao u odnosu na zadane postavke
operativnog sustava.

Moguće je zadavati i složenije umask maske, primjerice 0130 :
umask u-x,g=r,o+w
Ova maska brani pra vo izvršavanja ( execute ) za vlasnika ( u ) dok ne dira druge ovlasti za vlasnika. Za grupu ( g ) dozvoljava samo
prava čitan ja ( r ) dok brani pravo pisanja i izvrš avanja. I na kraju za sve ostale ( o ) dodaje pravo zapisivanja ne dira jući (ne
mijenjajući) ostale ovlasti.
Umask vrijednost se može definirati i unutar bilo koje shell skripte , ako za to imamo potrebe.

Vezano za promjene ovlasti s naredbom chmod , pogledajte i poglavlje:
4.3 . Ovlasti ( permissions & modes ) .

r

w

x

4

2

1

71

Veza ( . ) i ( .. ) oznaka s direktorijima i inode un osima je sljedeća:
• . ima isti inode broj kao direktorij u kojem se nalazi jer predst avlja sam sebe.
• .. ima inode broj roditeljskog direktorija jer pokazuje na direktorij “ iznad ” u hijerarhiji.

Inode struktura datoteka(e)
U odnosu na strukturu direktorija (mapa) , inode struktura datoteke izgled a malo drugačije:

Inode broj: pr. 4459826

Mode

Owner info

Size

Time stamps

DIRECT BLOCKS

Indirect blocks

Double Indirect

Triple Indirect

Objasnit ćemo polja unutar inode tablice za bilo koju pojedinu datoteku:
• Inode broj – s pripadajućim brojem inode-a je identifikator konkretne datotek e .
• Mode – ovdje se zapisuje nekoliko informacija za konkretni inode odnosno sâmu datoteku. I to redom:
o Koje su ovlasti ( permissions ) nad tom datotekom postavljene.
o Vrsta inode a, koja može biti:
▪ Datoteka - u ovom slučaju .
▪ Direktorij (mapa) - u prijašnjem slučaju .
▪ Blok ur eđaj i li drug i uređaj (tzv. device datoteke).
• Owner info – podaci o vlasniku i grupi za ovu datoteku (tko je vlasnik i kojoj primarnoj grupi pripada).
• Size – ovdje se zapisuje veličina datoteke u bajtima.
• Time stamps – ovdje se zapisuju vremena: kada je inode /datoteka kreirana, modificirana i sl.
• DIRECT BLOCKS – sadrži prvi blok podataka, koji je uvijek veličine bloka/klastera koji je definiran u trenutku
kreiranja datotečnog sustava, odnosno formatiranja particije s datotečnim sustavom . Obično je to 4KB.

Napredni d io priče s blokovima i klasterima

Prvo pogledajte detalje u poglavlju:
13.2 Geometrija diskova i to blokove odnosno klastere.

Vezano za pohranjivanje odnosno zapisivanje podataka u datoteke, važno je razumjeti kako se podaci zapisuju u najmanjim
jedinicama za pohranu odnosno u takozvani blok podataka. J edan blok je ovdje najmanja moguća jedinica za zapisivanje
podataka, koji se u konačnici i zapisuju u nutar ov og bloka . Ako je potrebno zapisati više podataka nego što stane u jedan blok
(pr. standardnih 4KB), tada se alociraju dodatni blokovi, sve do određene granice. Naime sve ovisno o datotečnom sustavu,
unutar jednog inode unosa, moguće je alocirati maksimalno definiran broj direktnih blokova ( DIRECT BLOCKS ), direktno u
jednom inod e unosu . Tako je z a ext2 linux datotečni sustav u DIRECT BLOCKS pokazivače ( pointere ) na blokove, moguće
spremiti do 12 blokova; obično od 4KB - što je ukupno 48KB prostora za spremanje podataka.

Ako je potrebno još prostora, na ext2 dat otečnom sustavu i njegovoj inode strukturi, tada je moguće aktivirati 13 -ti blok, odnosno
takozvani Indirect blocks , koji može koristiti do sljedeća 1024 bloka, odnosno blo k pokazivača ( engl. block pointer) .

S time je moguće pohraniti do 4MB , ako su blokovi od 4KB. Ako je potrebno još više, na ext2 datotečnom sustavu i njegovoj
inode strukturi, tada je moguće aktivirati još jedan blok pokazivač koji se zove Double Indirect blocks , koj i nakon ovih 48KB +
4MB može adresirati još 1024 Indirect blocks pokazivača što znači 1024 x 4MB = 4GB. I na kraju, ako niti to nije dovoljno, na
ext2 datotečnom sustavu i njegovoj inode strukturi, tada je moguće aktivi rati još jedan blok pokazivač koji se zove Triple Indirect
blocks , koji može adresirati do 1024 x Double Indirect blocks , što je 4GB x 1024 = 4TB .
Samim time o va veličina od 4TB je maksimalna veličina datoteke na Linux ext2 datotečnom sustavu.

Za neke druge Linux/Unix datote čne sustave ove veličine su malo drugačije , ali princip je isti . Zanimljivo je i to da se klasičnim
Linux datotečnim sustavima ext2 , ext3 ili ext4 , tijekom formatiranja particije s datotečnim sustavom def inira i gornj a granica
inode brojeva. To znači i kako je maksimalan broj svih datoteka og raničen tijekom formatiranja particije.

Ov o ograničenje je popriličn o veliko , ali moguće ga je dostići.

Kada se dogodi slučaj da smo iskoristili sve inode unose , više nije moguće kreirati niti jednu novu datoteku !

72

Ne zaboravite na to kako su i file deskriptori posebne datoteke, koji također imaju svoj inode broj.

Za detalje oko file deskriptora pogledajte poglavlje:
4.5.4 . Opisni ci datoteke ( File deskriptori) .

Pogledajte i ograničenje broja inode- ova za neke datotečne sustave koje imamo pod Linuxom :
• Z a ext2 , ext3 i ext4 broj inode-ova je 32 bitni broj, što znači mak simalan broj datoteka 2 32 = 4 milijarde.
• Z a XFS , BTFRS i ZFS broj inode-ova je 64 bitni broj, što zn ači maksimalan broj datoteka 2 64 (iz računajte sami) .

Iskorištenost inode brojeva možete vidjeti sa naredbom df (engl. Disk free ) upotrebom prekidača -i na sljedeći način :
df -hi

Filesystem Inodes IUsed IFree IUse% Mounted on
--------------------------------------------------------------------------------
rootfs 8.3M 133K 8.2M 2% /
udev 249K 366 249K 1% /dev
tmpfs 251K 350 251K 1% /run
/dev/sda1 117M 227K 117M 1% /export/Share1
/dev/sdb1 59M 2.4K 59M 1% /export/Share2

Broj koli ko je inode ova na kojem dat otečnom sustavu iskorišteno, vidimo u stupcu IUsed te u postotku iskorištenja, u stupcu
IUse% , a koliko ih je još slobod no, u stupcu IFree .

Konkretno u ispisu vidimo sljedeće (skratili smo opis):
• Z a root datotečni sustav ( / ) vidimo kako imamo alocirano 8.3 milijuna ( 8.3M ) inode unosa (u stupcu Inodes ) od
kojih je u upotrebi 133. 000 ( 133K ) što vidimo u stupcu IUsed . Od tog broja je slobodno odnosno još dostupno 8 ,2
milijuna ( 8.2M ) što vidimo iz stupca IFree .
• Za datotečni sustav montiran u ( /export/Share1 ) vidimo kako imamo alocirano 117 milijuna ( 117M ) inode unosa
(u stupcu Inodes ) od kojih je u upotrebi 227.000 ( 227K ) što vidimo u stupcu IUsed . Od tog broja je slobodn o
odnosno još dostupno 117 milijuna ( 117M ) što vidimo iz stupca IFree .
• Za datotečni sustav montiran u ( /export/Share2 ) vidimo kako imamo alocirano 59 milijuna ( 59M ) inode unosa
(u stupcu Inodes ) od kojih je u upotrebi 2,4 ( 2.4K ) što vidimo u stupcu IUsed . Od tog broja je slobodno odnosno
još dostupno 59 milijuna ( 59M ) što vidimo iz stupca IFree .
• …

Dakle o vdje konkretno vidimo statistike za svaki datotečni sustav sa svojom točkom montiranja zasebno.

Za detalje oko upotrebe naredbe df , pogledajte poglavlje:
13.10.2 . Naredba df .

Za druge detalje o inode unosima pogledajte i poglavlje :
9.4.3 Slijedeći koraci: Unix i network socketi i to cjeline pred kraj navedenog poglavlja.

Pogledajte i sljedeća poglavlja:
4.5.1 . Hard Linkovi.
4.5.2 . Soft linkovi.

Izvori informacija: [ 242 ],[ 243 ],[ 244 ],[ 245 ],[K- 12 ], man df,man 7 inode.

73

Hard Linkovi
Svaka datoteka odnosno njeno ime u Linux datotečnom sustavu je vezana za njen (pripadajući) inode broj . Stoga uvij ek postoji
jedna poveznica ( link ) između imena datoteke i njenog inode -a . Ova poveznica se zove Hard link odnosno tvrda poveznica .
Dakle ova veza je u konačnici između naziva datoteke i stvarnih podataka pohranjenih u tu datoteku, u datotečnom sustavu .
Podaci unutar svake datoteke se zapravo nalaz e zapisani unu tar inode unosa . Nadalje , moguće je kreirati i više hard link
poveznica na istu datoteku. Takav hard link ( slika 11. ) nastaje tako da se u dijelu datoteke u kojem je upisan njen inode broj,
koristi inode broj od neke druge datoteke, unutar kojeg su u konačnici i zapisani podaci te [ druge ] datoteke.
Kroz primjere ćete vidjeti i kako kreirati takozvanu hard link poveznicu na postojeću datoteku.
Slika 11. Hard linkovi

Prednosti i mane Hard linkova
Vezano za prednosti i mane hard linkova , v ažno je znati sljedeće:
• Mogu se kreirati samo unutar jedne particije jer inode unos postoji za svaku datoteku, ali unutar svake particije diska
zasebno (konkretno unutar datotečnog sustava s kojim smo formatirali particiju) .
• Inode broj izvorne datoteke i svih njenih hard linkova je isti (jer pokazuje na isti sadržaj datoteke).
• Brisanjem izvorne datoteke podaci ostaju sve dok postoji barem jedan hard link .
• Brisanjem hard linkova (poveznica) ne briše se sadržaj datoteke već samo broj hard linkova , sve dok postoji izvorna
datoteka ili barem jedan hard link .
• Ne može se kreirati hard lin k na direktorij (mapu) kako bi se spriječila po java rekurzivne p etlje unutar datotečnog su stava.
Naime tada bi bilo moguće kre irati hard link na roditeljski (vršni) direktorij, pa b i se ulaskom u njega ponovno ušlo u
trenutni direktorij, što bi uzr okovalo da ta j direktorij ima beskonačnu dubinu jer bi se ulaskom u njega ušlo u trenutni
direktorij i tako dalje, beskonačno.
• Mogu se povezati ( linkati ) sâmo datoteke, ali ne i direktoriji (mape), uz posebne iznimke:
o Kada se kreira svaki novi direktorij (primjerice naredbom mkdir ) kreira ju se hard linkovi i to redom:
▪ Jedan za roditeljski direktorij koji vidimo kao .. i on ima isti inode broj kao roditelj ( parent ).
▪ Jedan za trenutni direktorij koji vidimo kao . a li on ima novi inode broj.
• Ovlasti izvorne datoteke su iste na hard link datotekama.
o Promjenom ovlasti na hard link datoteci mijenjaju se ovlasti na izvornoj datoteci i obratno.
• Teže ih je primijetiti i pratiti jer se mora gledati broj linkova i inode b roj .

Kreirajmo datoteku imena text.txt pomoću naredbe echo :
echo “probni text” > text.txt

Napravimo takozvani hard link na nju , pomoću naredbe ln (engl. Links ), a pri tome će se nova datoteka zvati hard.link :
ln text.txt hard.link

Provjerimo kako to sada izgleda, U primjeru nam prekidač ( -i ) naredbe ls prikazuje Inode brojeve:
ls – ali

5636110 drwxr-xr-x 2 root root 4096 Nov 13 09:47 .
5636097 dr-xr-x---. 4 root root 4096 Nov 13 09:28 ..
5636111 -rw-r--r-- 2 root root 5 Nov 13 21:29 text.txt
5636111 -rw-r--r-- 2 root root 5 Nov 13 21:29 hard.link
Pogledajte gore: Inode brojeve (prvi stupac) od datoteka : text.txt i hard.link.
Dakle datoteka text.txt ima inode broj 56 36111 , a datoteka hard.link ima isti inode broj jer se radi o hard li nkovima
odnosno zbog toga jer svi oni pokazuju na istu lokaciju ( inode broj) na kojoj se nalazi sadržaj sâme datoteke. Obratite pažnju na
treći stupac koji označava broj hard linkova na izvornu datoteku, koji ovdje ima vrijednost 2 . Naime pošto svaka datoteka ima
barem jednu poveznicu: ime datoteke na svoj inode broj stoga, ako datoteka nema dodatnih hard link poveznica, ovdje ćemo
uvijek imati vrijednost: 1 . Stoga ako imamo jedan dodatno kreiran hard link na nju, vrijednost će biti 2 i tako dalje.
Izvori informacija: [K-1],[K-12], man ls , man ln.

74

Soft linkovi
Soft Linkovi se referenciraju na već kreiranu datoteku ili direktorij s apsolutnom ili relativnom putanjom.
Soft link datoteka zapravo pokazuje na ime datoteke (ili direktorija) a ne direktno na inode broj od izvorne datoteke.
To u konačnici ipak znači da se soft link in dir ektno veže na sadržaj izvorne datoteke, pošto se njen s adržaj odnosno podaci nalaze
u inode dijelu. Logička shema soft link datoteke je vidljiva na slic i 12 .
Slika 12. Pogled na so ft linkove

Prednosti i mane Soft linkova
• Fleksibilniji su jer pokazuju na putanju ( path ) do datoteke ili direktorija.
• M ogu se koristiti i između više datotečnih sustava ( filesystem ) odnosno diskova ili particija.

Slijedi nastavak na primjere od hard linkova . Pomoću naredbe ln napravimo soft link na izvorišnu datoteku text.txt , pri
čemu će se nova datoteka zv ati soft.link
ln -s text.txt soft.link

Provjerimo kako to sada izgleda
ls -ali

5636110 drwxr-xr-x 2 root root 4096 Nov 13 09:47 .
5636097 dr-xr-x---. 4 root root 4096 Nov 13 09:28 ..
5636111 -rw-r--r-- 2 root root 5 Nov 13 21:29 text.txt
5636111 -rw-r--r-- 2 root root 5 Nov 13 21:29 hard.link
5636112 lrwxrwxrwx 1 root root 8 Nov 13 09:34 soft.link -> text.txt
Uočimo razliku u inode broju soft linka : datoteka imena: soft.link ima potpuno novi inode broj ( 5636112 ) , a ne isti kao
izvorišna datoteka (na koju se referencira), kao što bi bilo u slučaju upotrebe hard linka .

Ponašanje soft linkova
• Pokazivanje na nepostojeće datoteke ili brisanje izvorne datoteke – ako izvorna datoteka ili direkto rij koji je povezan
soft linkom bude izbrisan, soft link postaje "prekinut" ili "mrtav" link (eng. dangling link ). Kada pokušate pristupiti
tom linku, dobivate poruku o pogrešci jer ne posto ji stvarni sadržaj na koji pokazuje. Dakle brisanjem originala tj.
izvorne datoteke ( source ), soft link ostaje, premda pokazuje na nepostojeću datoteku ili direktorij koji tada više ne
postoji pa je efektivno neupotrebljiv
• Premještanje izvorne datoteke – ako se izvorna datoteka premjesti, soft link i dalje pokazuje na staru putan ju, što
može dovesti do prekinutih poveznica.
• Izmjene u soft linku – promjena sadržaja preko soft linka utječe na originalnu datoteku. No, ako izbrišete soft link ,
originalna datoteka ostaje netaknuta.

Razlika između soft i hard linkova
• Soft link je pokazivač na drugu datoteku ili direktorij, dok je hard link direktna referenca na inode broj (strukturu
koja pohranjuje podatke o datoteci u datotečnom sustavu).
• Soft link može pokazivati na datoteku ili direktorij, čak i na razli čitim datotečnim sustavima.
• Hard link mora pokazivati na datoteku unutar istog datotečnog sustava i n e može se primijeniti na direktorije.
Izvori informacija: [K-1],[K-12], man ls , man ln,man 7 symlink.

75

Oznake vremena ( timestamps )
Tijekom svakog kreiranja direktorija (mape) ili d atoteke, kao i pristupanjem ili m ijenjanjem istih, zapisuje se vrijeme kada su se
navedene operacije radile. Naime v až no j e razumjeti, da se za svaku mapu i datoteku zapisuju oznake vremena, ovisno o
datotečn om sustavu na kojem se nalaze.

U pravilu se zapisuju sljedeće oznake vremena (engl. Timestamps ) :
• access – govori nam kada je pristupano datoteci ili mapi. N oviji datotečni sustavi ne moraju stalno mijenjati ovo
vrijeme zbog op timizacije performan si , već mogu koristiti „ relatime “ opciju kod koje se zapisuje (mijenja) vremenska
oznaka samo, ako je ovo vrijeme starije od modify vremena.
• modify – govori nam kada je kreiran ili je mijenjan sadržaj mape ili datoteke .
• change – govori kada je promijenjen njen status (status inode unosa) ili njene ovlasti (engl. Permissions & modes ).

Slijede primjeri

Nastavljamo s već kreiranim datotekama. Provje rimo kako izgledaju njihove oznake vremena , s izlistanjem :
ls -al

drwxr-xr-x 2 root root 4096 Nov 13 19:03 .
dr-xr-x---. 4 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 odnosno oznake malo detaljnije, pomoću naredbe stat za datoteku: text.txt
stat text.txt

File: `text.txt';
Size: 5 ; Blocks: 8 ; IO Block: 4096 ; regular file
Device: 801h/2049d ; Inode: 5636111 ; Links: 2
Access: (0644/-rw-r--r--);Uid: ( 0/root) ; Gid: ( 0/root)
Access: 2013-11-13 19:47:34.519854892 +0000
Modify: 2013-11-13 19:29:17.359728861 +0000
Change: 2013-11-13 19:20:19.372604340 +0000
Vidimo navedena vremena: Access/Modify/Change , a koja su osjetljiva na vreme nsku zonu u kojoj se računalo nalazi.
Lokalni vremenski odmak vremenske zone se vidi u zadnjem stupcu svakog retka; konkretno je to kod nas oznaka: +0000 . Ovaj
vremenski odmak ( + ili - ) odnosi se na odmak našeg lokalnog vremena od UTC vremenske zone.

Osim vremenskih oznaka, naredba stat nam prikazuje i inode broj datoteke (u primjeru: Inode: 5636111 ) te broj hard
linkova na tu datoteku (u primjeru: Links: 2 ). Pri tome o va dvojka znači da ova datoteka ima 2 hard linka .

Kako promijeniti vremena pristupa ili zadnje promijene datoteke pomoću naredbe touch :
• P romijenit ćemo: access ( -a ) i modify ( -m ) vrijeme u: godina: 2013, mjesec: 11, dan: 11, sat: 12, minuta: 01 i
sekunda: 10.
touch -a -m -t 201311111201.10 text.txt

Provjerimo sada vremena odnosno vremenske oznake ove datoteke :
stat text.txt

File: `text.txt'
Size: 5 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d
Inode: 5636111 Links: 2 Access: (0644/-rw-r--r-- )
Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2013-11-11 12:01:10.000000000 +0000
Modify: 2013-11-11 12:01:10.000000000 +0000
Change: 2013-11-13 19:20:19.372604340 +0000
Vidimo da smo promijenili ono što smo i željeli. Kako još provjeriti vremena prist upanja/promjena ili pristupa datotekama?

Provjerimo vrijeme zadnje promjene datoteke u sekundama [ oznaka je za UNIX vrijeme (u sekundama od 1.1.1970) ].
stat -c %Y file.sh

1458573410

Potom provjerimo isto vrijeme, ali s naredbom date na sljedeći način:
date -r file.sh +%s

1458573410

76

Slijede napredni primjeri
Pogledajmo i detaljniji ispis za našu datoteku, na razini datotečnog sustava (pr. ext3 ili ext4 ).
ls -ali file.sh

21062 -rw-r--r-- 1 root root 10 Mar 22 19:13 file.sh

Nas zanima inode broj od naše dat oteke (u ovom slučaju je to 21062 ). Sada ćemo izvući malo detaljniju statistiku na razini
datotečnog sustava. Naša datoteka se nalazi u direktoriju /root/test .

Vršni direktorij / je mont ir an sa particije /dev/sda1 i znamo da se koristi ext4 datotečni sustav. Pogledajmo što će nam reći
naredba mount :
mount

/dev/sda1 on / type ext4 (rw)

Sada ćemo u pretragu upisati naš INODE broj ( 21062 ) i particiju na kojoj se nalazi (sjetimo sa da INODE ovisi o particiji)
debugfs -R 'stat <21062>' /dev/sda1

debugfs 1.41.12 (17-May-2010)
Inode: 21062 Type: regular Mode: 0644 Flags: 0x80000
Generation: 2152679827 Version: 0x00000000:00000001 User: 0
Group: 0 Size: 10 File ACL: 0 Directory ACL: 0 Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x56f136ff:5705f0b8 -- Tue Mar 22 19:13:51 2016
atime: 0x56f13681:db1b39b4 -- Tue Mar 22 19:11:45 2016
mtime: 0x56f136ff:5705f0b8 -- Tue Mar 22 19:13:51 2016
crtime: 0x56f1359a:bd10ae80 -- Tue Mar 22 18:07:54 2016
Ovdje vidimo još jedno polje , a to je crtime . Naime u slučaju ext3 i ext4 datotečn ih sustava u ovo polje ( crtime ) se upisuje
vrijeme kreiranja datoteke.

Ostala polja su standardna za sve Unix/Linux dat otečne sustave: ctime , atime i mtime .

Naredba debugfs se koristi za debugiranje ext2 , ext 3 i ext4 datotečnih sustava. Osim toga s njom je moguće i mijenjati
određene parametre datotečnog sustava.

Za XFS datotečni sustav, za potrebe debugiranja koristi se naredb a xfs_io .

U nastavku pogledajmo statistike za XFS datotečni sustav gdje i mamo kreiranu datoteku /root/test.txt .
Provjerimo koje sve vremenske oznake datotečni sustav XFS pohranjuje (skratili smo ispis) :
xfs_io
xfs_io> open /root/test.txt
xfs_io> stat -v

fd.path = "/root/test.txt"
fd.flags = non-sync,non-direct,read-write
stat.ino = 805348398
stat.type = regular file
stat.atime = Wed Mar 23 21:40:03 2016
stat.mtime = Wed Mar 23 19:48:11 2016
stat.ctime = Wed Mar 23 19:48:11 2016
fsxattr.xflags = 0x0 []
Vidljivo je da se pohranjuju: atime , mtime i ctime , međutim ne zapisuje se vrijeme kreir anja datoteke kako kod ext3/4 .

Važno je razumjeti da pohranjivanje vremenskih oznaka ovisi o datotečnom sus tavu .
Naime neki datotečni sustavi spremaju određene oznake, a drugi ne!

Izvor informacija: [K-12], man stat,man debugfs,man date,man xfs_io,man mount.

77

Opisni ci dato teke ( File deskriptori )
Slijedi napredna cjelina!
Linux procesi (p okrenuti programi) komuniciraj u s datotekama , soketima i drugim procesima putem takozvanih file deskriptora .
Svaki proces u Linuxu ima svoj skup file deskriptora , koji pokazuju na otvore ne datoteke, sockete ili druge resurse. Primjerice
kada se otvori datoteka ili uspostavi veza putem socketa , kernel dodjeljuje file deskriptor tom resursu, a procesu se potom pristupa
kroz taj file deskriptor . Dakle, file deskriptori su način na koji procesi u Linuxu pristupaju datotekama, socketima i drugim
resursima.

File deskriptori su zna ni i kao opisnici datoteke i oni su posebne datoteke, odnosno datoteke koje se nalaze u posebnom dijelu
datotečnog sustava . Nadalje, o ni se prema većini osnovnih parametara, gledano s razine dat otečnog sustava, uopće ne razlikuju
od drugih datoteka, je r i oni imaju: ovlasti , datum kreiranja i inode broj u datotečnom sustavu . Pohranjuju se u vršnom sloju
datotečnog sustava koji se naziva virtualni datotečni sustav odnosno VFS ( Virtual File system ), koji se nalazi se u RA M memoriji .

File deskriptora p ostoje osnovne tri vrste, uz još tri rezervirane kategorije. Rezervirane ketagorije file deskriptora su :
• Stdin – koji predstavlja standardni ulaz, a njegov file deskriptor ima oznaku 0 .
• Stdout – koji predstavlja standardni izlaz, a njegov file deskriptor ima oznaku 1 .
• Stderror – koji predstavlja standardnu grešk u, a njegov file deskriptor ima oznaku 2 .

Primjerice svaki puta kada otvorite neku datoteku operativni sustav kreira vezu ( stream ) prema toj datoteci. File deskriptor
zapravo predstavlja vezu prema toj otvorenoj datoteci. U slučaju rada u terminalu, postoje minimalno gore navedene tri kategorije
posebnih file deskriptora . Ova tri file deskriptora : stdin , stdout i stderror su obično spojena na terminal , a ne na datoteke
ili druge poveznice, kao ostali file deskriptori .

To znači da kada nešto pišete u termi nalu, sve što pišete ulazi na stdin( FD 0) , a ono što vidite na ekranu odlazi zapravo na
stdout( FD 1) .

Zamislimo otvorene datoteke poput : datoteka-1 , datoteka-2 i datoteka-3 . File deskriptori su indeksi odnosno
pokazivači na te datoteke, koji se čuvaju u posebn oj tablici.

Za svaki pokrenuti program ( proces ), održava se po jedna ovakva tablica s otvorenim datotekama, poput tablice dolje :

Index

1

2

3

Datoteka

datoteka-1

datoteka-2

datoteka-3

Š to se bilo kojeg pokrenutog programa, odnosno L inux procesa tiče, njega ne zanima (niti je svjestan) kako zap isivati podatke u
datoteke, kako im uopće pristupiti i slično, o tome se brine s â m kernel, koji je svjestan toga na koje m datotečnom sustavu se
nalaze datoteke, kao i drugih detalja.

Programi/procesi za pravo za rad i komunikaciju koriste file deskriptore , pa se tako može dogoditi da se otvor e: po jedan file
deskriptor na istu datoteku za čitanje, jedan za zapisivanje, i tako dal je, sve ovisno o namjeni.
Slična situacija je i kod mrežne komunikacije, u kojoj se za komunikaciju, otvaraju posebni file deskriptori , ovisno o vrsti
komunikacije; primjerice: socket (poglavlje: 9.4.3.1 ) ili pipe (pogl. 9.4.1 ) .
Dakle poveznica između datoteka i file deskriptora nije 1:1 .

Prije navedena file deskriptor tablica zapravo izgleda ovako nekako:

Index

41

42

43

44

Datoteka

datoteka-1

datoteka-1

datoteka-2

datoteka-3

Način pristupa

Č itanje ( r )

Pisanje ( w )

Dodavanje na kraj datoteke ( append )

Č itanje ( r ) i pisanje ( w )

Tijekom pokretanja bilo ko jeg programa (procesa), prvo se otvaraju prva tri osnovna definir ana file deskriptora , koji moraju
imati svoje pripadajuće brojeve ( 0 , 1 i 2 ) . Potom se otvaraju i drugi po redu file deskriptori , kako se program učitava u RAM
memoriju. Drugim riječima, programi odnosno procesi u Linuxu, za svako dohvaćanje vanjskih resursa, kao i za međusobnu i
mrežnu komunikaciju, koriste file deskriptore , kako ćete vidjeti u poglavlju: 9.4 . Komunikacija između procesa .

Svakim otvaranjem d atoteke; primjerice: te kstualne, binarne/izvršne, skripte, programskih biblioteka i slično, kao i
svake mrežne veze, kreira se barem jedan file deskriptor koji predstavlja vezu prema toj datoteci ili mrežnoj vezi. Stoga se na
sustavim s velikim brojem mrežnih veza ili velik im brojem otvorenih datoteka otvara još veći broj fi le deskriptora .
Ne zaboravimo da se file deskriptori kreiraju u RAM memoriji!

Izvori informacija: [K-12],[ 673 ] , man bash .

78

File deskriptori detaljnije
Slijedi napredno poglavlje (4.5.5.x).
Iz sigurnosnih i razloga iskorištavanja resursa sustava, ograničen je maksimalan broj file deskriptora koji se može definirati za
cijeli sustav, al i i svakog pojedinog korisnika. U svakodnevnom radu, posebno u radu servisa (zbog ograničenja njihovog rada) ,
ponekad nam je potrebno saznati koliko file deskriptora su oni zauzeli.
Ne zaboravimo da u Linuxu svaki uređaj predstavlja neka (posebna) datoteka .
Stoga svaki program pristupa prilično velikom broju datoteka, poput:
• Raznih biblioteka (engl. library ) i drugih datoteka potrebnih za rad sâmog programa.
• Zapisničkih (log) datoteka u koje se zapisuju razni statusi rada i pristupanja programu i slično .
• Posebnih datoteka koje predstavljaju hardver ili neke funkcionalnosti sustava (tzv. /dev/ datoteke).
• Unix ili network socket datoteka te drugih programa i njihovih datoteka.

Da bismo se detaljni je upoznali s fi le deskriptorima , p rvo što moramo saznati je koji proces ID ( PID broj ) ima ser vis ili program
koji pratimo. To možemo n apraviti na neko liko načina. Recimo da se radi o procesu imena sshd (to je SSH poslužitelj ).
Pogledajmo kako pronaći njegov PID broj ( PID je jedinstveni identifikator broja procesa tj. pokrenutih programa na sustavu).

1. Način : Upotrebom naredbe za izlistavanje aktivnih Linux procesa ( pokrenutih programa i servisa ) to j est ps na sljedeći n ačin:
ps -aux | grep sshd

root 18670 0.0 0.0 66612 1228 ? Ss Feb22 0:00 /usr/sbin/sshd
PID broj (ovog) programa/procesa se nalazi u drugom stupcu . U našem slučaju je t o PID broj 18670 .

2. Način: Upotrebom naredbe pidof koja nam na osnovu imena procesa vra ća PID broj tog (konkretnog) procesa:
pidof sshd

18670
Dakle imamo PID broj : 18670 . Sada moramo saz nati koliko file deskriptora ima otvoren naš proces s PID brojem 18670 .

Za prebrojavanje file deskriptora (između njenih drugih mogućnosti), za određeni PID broj, zadužena je naredba lsof .
Listu svih otvorenih file deskriptora za naš program (po PID broju 18670 ) ćemo dobiti ovako:
lsof -a -p 18670
… i to datoteku po datoteku (kojih će obično biti otvoren popriličan broj) .

Pošto nam treba samo broj otvorenih file deskriptora (odnosno veza prema otvorenim datotekama) , koristit ćemo naredbu „ word
count “ odnosno wc -l , koja će nam ih sâmo prebroji ti . Stoga ćemo pokrenuti sl jedeći n îz naredbi :
lsof -a -p 18670 | wc -l

39
I konačno smo dobili rezultat: 39 otvorenih file deskriptora , kolikoj je otvorio naš program odnosno servis sshd .

Želimo li vidjeti koliko file deskriptora je u upotrebi na cijelom sus tavu, to ćemo postići na sličan način:
lsof | wc -l

334
Dakle cijeli Linux (trenutno) na kojem smo pokrenuli ovu naredbu koristi 334 file deskriptora (radi se o računalu koje baš i nije u upotrebi) .

Pogledajmo file deskriptore za stdin (0 ) stdout (1) i stderr (2 ). I to za recimo naš Web poslužitelj Apache .
Pronašli smo PID broj našeg Apache Web poslužitelja, koji je u ovom slučaju: 29377 .

Pogledajmo koje sve file deskriptore on ima otvorene (ispis je skraćen za potrebe prikaza):
lsof -p 29377

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 29377 apache 0r CHR 1,3 0t0 23086 /dev/null
httpd 29377 apache 1w CHR 1,3 0t0 23086 /dev/null
httpd 29377 apache 2w REG 0,52 2104 27263802 /var/log/httpd/error_log
U stupcu FD nalaze se file deskriptori u obliku : Broj Stanje . Dakle pod stupcem FD tražimo file deskriptore: 0 , 1 i 2 , pa imamo:
• Stdin odnosno FD 0 je u stanju či tanja (p rema oznaci “ r ” ( READ ) ), iz datoteke (stupac NAME ): /dev/null što
opet znači kako trenutno ne prima nikakav ulaz podataka.
• Stdout odnosno FD 1 je u stanju zapisivanja (p rema oznaci “ w ” ( WRITE ) ), prema d atoteci (stupac NAME ):
/dev/null . T o znači kako ništa trenutno ne šalje na “Ekran/MON ITOR” jer sve završava u “ NULL ” datoteci .
• Stderr odnosno FD 2 je u stanju zapisivanja (p rema oznaci “ w ” ( WRITE ) ), prema d atoteci (stupac NAME ):
/var/log/httpd/error_log . T o znači kako se sve greške zapisuju odnosno logiraju u tu datoteku.

Isto smo još jednostavnije mogli postići izlistanjem datoteka u direktoriju unut ar vršnog /proc/ PID /fd/ direktorija.
Pri čemu je PID zapravo PID broj našeg procesa (u ovom slučaju 29377 ).

79

Na primjeru sa slike 13 smo pokrenuli naredbu:
ls -al /proc/29377/fd/

Slika 13. File deskrip tori ( veze prema otvor enim datotekama ) za pojedini pr oces (pokrenuti progr am)

Opis: Uokvireni su 0 , 1 i 2 koji predstavljaju redom: stdin (standardni ulaz) ( 0 ) , stdout (standardni izlaz) ( 1 ) i stderr (standardnu grešk u) ( 2 ) .

Za detalje oko naredbe lsof pogledajte poglavlje:
25.7.6 Naredba li st open files ( lsof ) .

Osim osnovnih file deskriptora koje smo naveli, postoje i posebne vrste file deskriptora :
• pipe – odnosno FIFO , a oni se koriste za komunikaciju između procesa/programa. U stupcu TYPE , ispisa naredbe
lsof , obično ima oznaku: FIFO .
• unix socket – koriste se za komunikaciju između procesa/programa. U stupcu TYPE , ispisa naredbe lsof , običn o
ima oznaku: unix .
• network socket – korist e se za mrežnu komunikaciju između procesa/programa. U stupcu TYPE , ispisa naredbe
lsof , obično ima oznaku: IPv4 ili IPv6 ovisno radi li se o IP v.4. ili IP v.6. protokolu.

Za pipe , unix socket i network socket vrste file deskriptora , pogl edajte veće poglavlje :
9.4 Komunikacija između procesa , gdje ćete vidjeti malo detaljnije kako oni rad e i čemu točno služe.

Napredni primjeri
Kako smo već govorili : file deskriptor 0 predstavlja standardni ulaz, a fi le deskriptor 1 standardni izlaz. To znači kako će se
slanjem podataka (ili u ovom primjeru teksta) na file deskriptor 1 za konkretni proces (program) taj tekst ispisati na standardni
izlaz (te rminal/ekran/monitor) . Pronađimo PID broj naše trenutne ljuske. To možemo napraviti p omoću naredbe : ps -ef , te
pretraživanjem PID broja naše ljuske ili sa sljedećom naredbom koja će nam dati PID broj trenutne ljuske ( shella) :
echo $$
U svakom slučaju, s aznali smo da je naš shell/ljusku ( bash ), u kojem radimo, pokrenut pod PID brojem 1180 . To zna či da bi
slanjem nekog teksta direktno na file deskriptor našeg shella zadužen za standardni izlaz ( 1 ), taj tekst bio poslao na naš ekran.
Dakle ako napravimo preusmjeravanje odnosno redirekciju teksta „ Test “ u željeni file deskriptor ( 1 ) i to ovako:
echo "Test" > /proc/1180/fd/1

Dobit ćemo poruku u naš oj ljusci ( shellu) odnosno na našem terminalu/ ekranu (naredbenom retku):
Test
To znači da istu stvar možemo napraviti i na nekom drugom sh ellu ili programu. Također na isti način možemo pokrenuti i
redirekciju ispisivana bilo koje druge naredbe, u n ek u drugu ljusku ( shell) , poput ispisivanja naredbe: ls -al :
ls -al > /proc/1180/fd/1

Dodatno, postoji i naredba, s kojom možemo napraviti trajniju promjenu našeg standardnog izlaza (ili ulaza) prema negdje
drugdje. Ova naredba je exec , a može se koristiti i za druge namjene (pr. zamjene shella i druga preusmjeravanja).
Zamislimo slučaj u kojem imamo dva korisnika spojena preko SSH protokola na udaljeni poslužitelj.

80

Prvi ima bash shell (ljusku) u kojoj radi, s PID brojem 1383 , a drugi sm o mi, koji imamo naš u radnu ljusku ( shell) s PID brojem
1180 . Mi možemo trajno preusmjeriti svoj standardni izlaz bash lj uske (ono što vidi mo na ekranu) na standardni izlaz drug e
bash ljuske drugog korisnika i to samo, ako smo root korisnik odnosno korisnik s dovoljno visokim pravima.

Iz naše bash ljuske pokrenimo naredbu exec na sljedeći način :
exec 1 > /proc/1383/fd/1
Od tog trena, sve što upišemo u n aš oj bash ljusci , će se ispisiv ati na udaljeno j bash ljusci od drugog korisnika ( PID 1383 ). Ako
primjerice pokrenemo naredbu : ls -al njen ispis neće više biti vidljiv u naš oj bash lj usci , već u ono j od drugog korisnika
odnosno one bash ljuske s PID brojem: 1383 .

Ako ipak sve želimo vratiti na terminal koji se prije koristio, moramo vratiti preusmjeravanje koje je bilo i prije , dakle:
1
→
/dev/pts/0 , pa to i napravimo:
exec 1 > /dev/pts/0

U bilo kojem trenutku možemo vidjeti koji ter minal koristimo u naš oj ljusci ( shellu) , s naredbom tty na sljedeći način :
t ty

Izvori informacija: [ 222 ],[ 673 ],[K-12] , man lsof,man 1p exec,man tty.

4.5.5.1. File deskriptori i naredba lsof
Pomoću nar edbe lsof možemo provjeravati i kojim datotekama unuta r željenih dire ktorija, pristupaju ili ih drže otvorenima,
određeni programi ili servisi .
Pogledajmo koji sve programi pristupaju datotekama unutar direktorija /var/log ne uključujući njene pô ddirektorije, već s âmo
datoteke koje su u njemu odnosno u ovom direktoriju (skratili smo ispis):
lsof +d /var/log/

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 734 root 2w REG 0,54 38445 27264337 /var/log/messages
rsyslogd 734 root 4w REG 0,54 75986 27263807 /var/log/cron
rsyslogd 734 root 5w REG 0,54 165122 27264345 /var/log/secure
rsyslogd 734 root 6w REG 0,54 5383 27264313 /var/log/maillog
mysqld 1139 mysql 1w REG 0,54 70047 27264189 /var/log/mysqld.log
mysqld 1139 mysql 2w REG 0,54 70047 27264189 /var/log/mysqld.log
S krajnje li jeve strane (pod stupcem COMMAND ) vidimo koji program pristupa, a na krajnjoj desnoj strani ( NAME ) vidimo kojoj
datoteci se pristupa .

Ako želimo vidjeti neki drugi poddirektorij i datoteke kojima se pristupa unutar njega, poput direktorija : /var/log/httpd/
koji koristi Apache server za zapisivanje log datoteka , to možemo postići na sljede ći način;
lsof +d /var/log/httpd/

Vidjet ćemo listu svih datoteka kojima netko trenutno pristupa.
Možemo i provjeriti tko trenutno koristi (čita ili z apisuje) u točno određenu datoteku.
U primjeru ćemo provjeriti tko koristi datoteku /var/log/messages , na sljedeći način ( skratili smo ispis ):
lsof /var/log/messages

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 734 root 2w REG 0,54 38445 27264337 /var/log/messages
Dakle program u stupcu COMMAND je rsyslogd . Prema tome, program rsyslogd trenutno koristi navedenu datoteku.

Za druge primjere upotrebe naredbe lsof , pogledajte i poglavlja:
9.4.1 . Unix Pipes.
9.4.3 . Slijedeći koraci: Unix i network socketi .
25.7.6 . Naredba li st open files ( lsof ).

87

o MAXLOGINS – definira ograničenje na maksimalni broj istovrem enih (paralelnih) logiranja istog korisnika .
o MAXSYSLOGINS – definira ograničenje na maksimalni broj istovremenih (paralelnih) logiranja istog korisnika
direktno na sustav.
o MSGQUEUE – definira maksimalnu kol ičinu memorije koja se može koristiti za POS IX nîz za poruke ( message
queue ) u bajtima ( prlimit -q ).
o NOFILE – definira ograničenje na maksimalni broj otvorenih datoteka ( prlimit -n ).
o NICE – definira ograničenje na maksimalnu vrijednost na koju se može povećati nice prioritet procesa.
o NPROC – definira ograničenje na maksimalni broj pokrenu tih procesa ( prlimit -u ).
o PRIORITY – definira ograničenje na prioritet procesa s kojima kori snik/grupa mogu pokrenuti procese .
o RSS – definira ograničenje na procese za upotrebu rezidentne memorije ( resident set size ) u kB ( prlimit -m ).
o RTPRIO – definira ograničenje na maksimalnu vrij ednost na koju se može povećati realtime prioritet procesa
( prlimit -r ).
o SIGPENDING – definira ograničenje na maksimalni broj signala koji su u stanju če kanja ( prlimit -i ).
o STACK – definira ograničenje na maksimalnu veličinu memorijsko g stoga u kB (za svaki pojedini proces)
( prlimit -s ).
• <value> su vrijednosti koje definiramo u polju <item> , a postavljamo ovdje.

P ostavljena ograničenja možemo vidjeti s naredbom ulimit na sljedeći način :
ulimit -a

Sva ovdje gore navedena dodatna ograničenja koja se tiču ograničenja svih novih procesa, možemo vidjeti i s naredbom:
prlimit

RESOURCE DESCRIPTION SOFT HARD UNITS
AS address space limit unlimited unlimited bytes
CORE max core file size 0 unlimited blocks
CPU CPU time unlimited unlimited seconds
DATA max data size unlimited unlimited bytes
FSIZE max file size unlimited unlimited blocks
LOCKS max number of file locks held unlimited unlimited
MEMLOCK max locked-in-memory address space 65536 65536 bytes
MSGQUEUE max bytes in POSIX mqueues 819200 819200 bytes
NOFILE max number of open files 32768 42768
NPROC max number of processes 65535 65535
RSS max resident set size unlimited unlimited pages
RTPRIO max real-time priority 0 0
RTTIME timeout for real-time tasks unlimited unlimited microsecs
SIGPENDING max number of pending signals 224551 224551
STACK max stack size 9281536 9281536 bytes
Vidimo kako smo dobili trenutno postavlje na ograničenja na cijeli sustav. Međutim, moguće je definirati i ograničenja na procese
prema korisnicima ili korisničkim grupama koje ih pokreću , te dodatno za već pokrenute procese (programe) .
Dakle i naredba ulimit i prlimit prije nego se ikoji proces pokrene, prvo provjerava ima li on neka ograničenja u:
• Datoteci: /etc/security/limits.conf .
• I li u nekoj od datoteka unutar vršnog direktorija: /etc/security/limits.d/ .
Ako su neka od ograničenja postavljena, ona će biti i primijenjena u tre nutku pokretanja programa. Nakon što su ograničenja
primijenjena, ona se zapisuju u datoteku: /proc/ PID /limits , pri čemu PID broj označava PID broj pokrenutog programa
(procesa). Pomoću naredbe prlimit možemo i vidjeti koja su efektivna ograničenja primij enjena na određeni pokrenuti
program (proces). Ako primjerice naš program ima PID broj 1745 , tada ih možemo vidjeti s naredbom:
prlimit -p1745
Isto tako, moguće je i ruč n o promijeniti neka od ograničenja, na već pokrenuti program (proces). Ako se primjerice radi o istom
PID broju i ako želimo tom procesu omogućiti povećanje br oja otvorenih datoteka , što ukl jučuje i file deskriptore (na
SOFT= 32768 te HARD= 65535 ), to možemo napraviti n a slijedeći način. Prvo pogledajmo opis ove opcije:
o NOFILE – označava ograničenje na maksimalni broj otvorenih d atoteka i postavlja se sa: prlimit -n

Navedenu promjenu ćemo stoga napraviti na sljedeći način:
prlimit -p1745 -n=32768:65535

U svakom slučaju sva ograničenja koja definiramo u direktoriju /etc/security/* primjenjuju se kada se program pokreće
od strane nekog korisnika odnosno, ako program sâ mi pokrećemo, tek nakon što se logi ramo kao željeni korisni k. Ako ipak
želimo iz našeg korisnika postati neki drugi korisnik, bez odlogiranja i ponovnog logiranja , to možemo izvesti pomoću naredbe
sudo i to možemo napraviti , ako koristimo prekidače -i -u . Ako p rimjerice želimo postati korisnik web , ali da se postave i
sva njegova ograničenja i sve postavke sustava ( ENV varijable), moramo to napraviti na sljedeći način :
sudo -i -u web

PRLIMIT funkcionalnost je dostupna tek od kernela 2.6.36, dakle tek na RedHat / CentOS 7.x ili novijima!

Izvori informacija: [ 596 ],[ 597 ],[ 598 ],[ K-14 ], man limits.conf , man prlimit,man sudo.

88

Naredba sysctl
Slijedi napredno poglavlje!
Sysctl je sučelje za baratanje s parametrima sustava na razini kernela, koje je bazirano na upotrebi s ysctl varijabli . Sysctl varijable
imaju i svoj pâr unutar /proc stabla d irektorija (i datoteka). U sysctl postavke se uklapaju i primjeri s file deskriptorima iz
prethodnog poglavlja, a koje možemo per manentno konfigurirati korištenjem sysctl metoda. U datoteci /etc/sysctl.conf
se nal aze upisani parametri ker nela koji će biti učitani tijekom svakog pokretanja sustava. Na novijim inačic ama RedHat/Rocky
Linuxa v.7.x /8 + moguće je koristiti i zasebne datoteke, svaku imena poput : IME.conf unutar direktorija: /etc/sysctl.d/
(u naj novijim inačicama u /usr/lib/sysctl.d/ ) u koje je moguće upisivati iste vrijednosti kao i u datoteku
/etc/sysctl.conf . Pri tome IME datoteke ( IME.conf ) može biti bilo koje ime ili i me s rednim brojem, pri čemu se prvo
učitavaju datoteke s manjim početnim brojem; primjerice : 12-diskovi.conf će se učitati prije 25-mreza.conf .

Slijede k lasični p rimjeri uporabe .
Dodajmo sljedeće retke (preporuča se i još jeda n redak s opisom), u datoteku: /etc/sysctl.conf
# Maximum number of open files permited
fs.file-max = 1000000
Ovdje smo postavili maksimalnu vrijednost na 1.000.000 file deskriptora za sve programe (i mrežne konekcije) pokrenute na
Linux sustavu. Za provjeru što se sve može konfigurirati preko sysctl sučelja trebamo pokrenuti sljedeću naredbu :
sysctl -a

Ako želimo ponovno postaviti vrijednosti koje smo definirali u /etc/sysctl.conf , tada pokrenimo sljedeću naredbu :
sysctl -p /etc/sysctl.conf

Na (novijim) sustavima koji koriste systemd servis, za inicijalno čitanje i postavljanje sysctl varijabli koristi se servis:
systemd-sysctl . Na ti m sustavim se za ponovno učitavanje postavki upisanih u gore nave dene datoteke može restartati ovaj servis:
systemctl restart systemd-sysctl

Za druge sysctl primjere pogledajte i slijedeće cjeline:
• 4.5.6.2. Ograničenja procesa .
• 9.3.1.1. Još detaljniji rad procesa i n î ti .
• 10.7.2.2. NUMA.
• 12.3.2.1. Paging i dijeljenje memorije (Shared Memory).

Pogledajte i druge cjeline u kojima se također spominju sysctl varijable :
• 12.3.4.2. Huge Pages.
• 12.3.5. Zone RAM memorije.
• 12.5. Out of Memory stanje rada i konfiguracija OOM killera .
• 13.8.2.1 . Malo više detalja o swap sustavu i particiji.
• 14.1.2. Optimizacija Page Cache sloja i poglavlja koja slijede te
• 20.7.1.2. Rad s ARP protokolom.
• 20.7.1.3 . Scenarij za prisilno osvježavanje ARP tablice ( Gratuitous ARP ) detaljnije.
• 22.3.3. Multicast u upotrebi.
• 23.2.1 . Optimizacije vezane za fragmentaciju i MTU.
• 24.2.2. Kako se uspostavlja TCP veza i poglavlja koja slijede te
• 25.6.8. Ruting i optimizacija ruting parametara .
• 25.7.1.1 . ICMP poruka.

Pogledajte i poglavlje o vatrozidu : 26.7.2.1 . Primjeri te poglavlje:
• 28.3 . Sigurnosne preporuke.

Sve sysctl varijable grupirane su u nekoliko kategorija: ABI , fs , kernel , net , sunrpc , user i vm , a opisane su na izoru
informacija [ 1405 ] : https://www.kernel.org/doc/Documentation/sy sctl/ . Sysctl naredba se koristi i na FreeBSD UNIXu .

Izvori informacija: [ 157 ],[ 221 ],[ 325 ],[ 340 ],[ 341 ],[ 478 ],[ 642 ],[ 1405 ],[K-12],[ K- 14 ], man sysctl,man sysctl.d,
man sysctl.conf,man systemd-sysctl,man 5 proc.

89

Naredba fuser
Slijedi napredno poglavlje!
Naredba fuser , koristi se, za razliku od naredbe lsof kada im amo potrebu provjeriti koji proces koristi određenu datoteku,
direktorij ili mrežni socket . Dodatno, moguće je vidjeti i informacije o tom procesu, kao i vrsti pristupa na njega. Iako namjena
ove naredbe nije dire ktno vezana za naredbu lsof kao niti za file desk riptore , nji hova veza je indirektna, pa ju stoga spominjemo
u ovom poglavlju.

Naredba fuser u svom ispisu, pod dijelom vrste pristupa ( ACCESS ), nudi nam slijedeće statistike o vrsti pristupa :
• c – označava trenutni direktorij (engl. Current directory ).
• e – ovo je izvršna datoteka ( engl. Executable ) koja je pokrenuta.
• f – ovo je otvorena datoteka, slovo f se obično ne prikazuje u stan dardnom prikazu .
• F – ovo je otvorena datoteka za zapisivanje ( write ), slovo F se obično ne prikazuje u standardnom prikazu .
• r – ovo je root direktorij.
• m – ovo je memorijski mapirana ( mmap ) datoteka ili dijeljena bibli oteka.

Česti prekidači ove naredbe su:
• -c – označava traženi mont ir an d atotečni sustav .
• -k – ubij pronađene procese .
• -i – interaktivni rad: prvo pitaj prije nego što nešto radiš (pogotov o , ako se koristi -k ).
• -l – lista signala koje možemo slati procesu kod ubijanja (koje navodimo u - IME -SIGNALA odnosno -SIGNAL ).
• -m – označava sve procese koji pristupaju datotečnom sustavu ( mount point ) na kojemu se nalazi i datoteka koju gledamo.
• -n – označava mrežni prostor , koji je standardno datoteka ( file ), ali može biti i:
o -n tcp – označava TCP transportni mrežni pro tokol, odnosno otvoreni TCP port .
o -n udp – označava UDP transportni mrežni prot okol, odnosno otvoreni UDP port .
o -4 – označava samo upotrebu IPv.4 protokola, dok -6 označava samo upotrebu IPv.6 protokola .
• -v – označava detaljniji ( verbose ) ispis.
• -SIGNAL – vezano za -k . Ovo je oznaka signala koji će se poslati procesima koj e se ubija s prekidačem -k .

Lista signala koje standardno možemo poslati procesima je sljedeća :
• HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR
SYS

Slijede primjeri
1. Pogledajmo koji procesi koriste datoteke unutar našeg trenutnog (radnog) direktorija ( /root ):
cd /root/

Te ih konačno provjerimo s naredbom fuser :
fuser -v ./

USER PID ACCESS COMMAND
/root: root 15125 ..c.. bash
Koristili smo i pre kidač -v za detaljniji ispis. Vidimo kako je unutar direktorija /root aktivan linux proces s PID brojem
15125 , koji je zapravo pokrenuta naredba bash koja je naša aktivna l juska ( shell ), ko ja ima pr istup na direktorij: o znaka c pod
stupcem ACCESS .

2. Sada pogl edajmo obratno: zan ima nas koj i proces koristi, odnosno koji proces je pokrenuo konkretnu naredbu ( bash ) koja se
nalazi na putanji /bin/bash :
fuser -v /bin/bash
USER PID ACCESS COMMAND
/bin/bash: root 15125 ...e. bash
Vidimo kako je korisnik root pokrenuo ovu naredbu, čiji je PID broj 15125 , a pristup je označen kao: e što znači kako se r adi
o izvršnoj datoteci.

3. U ovom primjeru, zanima nas tko je otvorio TCP mrežni port 22 ( TCP port 22 koristi SSH poslužitelj za udaljeni pristup):
fuser -v -n tcp 22

USER PID ACCESS COMMAND
22/tcp: root 6796 F.... sshd
root 14418 f.... sshd

90

Isto smo mogli dobiti i sa:
fuser -v 22/tcp

USER PID ACCESS COMMAND
22/tcp: root 6796 F.... sshd
root 14418 f.... sshd
Vidljivo je da je TCP port broj 22 otvorio proc es/naredba imena sshd što je zapravo SSH posl užiteljski servis ( daemon ) te
vidimo sve PID brojeve od oba S SH procesa. Prvi u ovom slučaju PID ( 6796 ) je inicijalni SSH servis, a drugi ( 14 418 ) je onaj
koji se pokrenuo za naše spajanje (preko njega smo se udaljeno spojili na SS H).

Kada bi se još jedan SSH klijent spojio na ovaj poslužitelj imali bi sljedeće stanje:
fuser -v 22/tcp

USER PID ACCESS COMMAND
22/tcp: root 6796 F.... sshd
root 14418 f.... sshd
root 14770 f.... sshd

4. Pronađimo sve procese , prema PID brojevima, koji koriste mont ir ani datotečni sustav koji je povezan s diskom /dev/sdb :
fuser -c /dev/sdb

/dev/sdb:
344 1688 1689 3462 3480 3494 3787 3806 3814 3820 3834 3835 3836 3837
3838 3840 3853 3868 3906 3907 3919 4018 4050 4076 4077 4078 4080 4081
4084 4090 4145 4146 4168 4235 4241 4242 4269 4320 4321 4322 4323 4324
4325 5770 14545 14763 15123
Dobili smo listu svih PID brojeva, svih procesa koji su otvorili neku datoteku na navedenom disku ( /dev/sdb ).
Za više detalja smo mogli koristiti i prekidač -v , ali bi dobili predugačku listu (za našu potrebu prikaza).

4.1 U slučaju kada se sustav nalazi u kritičnom stanj u i ima greške na particiji, kao krajnja mjera bi bila ubijanje sv ih procesa
koji drže bilo koje datoteke otvorene na navedenom disku, ako imamo potrebu odmontirati ( umount ) par ticiju pa ju testirati
odnosno skenirati i popraviti eventualne greške na njoj. U ovom primjeru se radi o particij i /dev/sdb .

Oprez - nemojte ovo raditi jer ćete srušiti cijelo računalo odnosno Linux sustav!

fuser -c -i -k /dev/sdb

...
Isto tako smo mogli poubijati odnosno pozatvarati procese ko je drže određene (pojedine) datoteke te krenuti dalje .

Ako naredba fuser n ije instalirana, možete ju instalirati pomoću menadžera softverskih paketa, s naredbom yum :
yum install psmisc

Naredba fuser je vrlo korisna (ali često zanemarena) u administraciji Linux sustava, osobito pri dijagnostici kada
neki proces "drži" otvoren u datoteku, točku montiranja ( mount point ) , mrežni port ili uređaj .

Kako ona radi:
Kad proces otvori neki resurs, kernel mu pridruži file descriptor (FD).
Naredba fuser pretražuje /proc stablo (konkretno /proc/<PID>/fd/ i /proc/<PID>/maps ) i pronalazi koji PID
ima otvoren file deskriptor prema navedenom resursu.

Izvor informacija: man fuser.

91

4.6. Prorijeđene ( Sparse ) datoteke
U ovom naprednom poglavlju pozabavit ćemo se s takozvanim prorijeđen im datotekama koje se nazivaju Sparse files ( Sparse
iz e ngleskog: rijetke ili prorijeđene [datoteke]) . Naime u normalnom radu, svaka datoteka može imati određene praznine ili prazna
područja odnosno područja koja sadrže nule. To možemo promatrati i ovako: zamisli mo knjigu od stotinu stranica, na kojoj je
svaka druga stranica prazna. Ova kva knjiga fizički zauzima stotinu stranica , ali efektivno ih je iskorišteno samo pol ovina. Isto il i
barem u nekoj mj eri slično može biti i s datotekama jer se kod datoteka koje sadrže nule odnosno praznine , na disk za pisuju i
one, pa se u konačnici prostor na disku zauzima i s praznim prostorom i naravno s konkretnim sadržajem odnosno podacima.
To se događa stoga što se na razini diskovnog sustava podaci al ociraju (i zapisuju) u blokovima, bez obzira nalaze li se u nj ima
stvarni podaci ili nule. Vezano za prorijeđene datoteke, i ovo su datoteke u osnovi baš kao i bilo koje druge, osim što blokovi
podataka koji se zapra vo zapisuju na disk, a koji sadrže samo nule o dnosno po logici pra znine, nisu stvarno i poh ranjeni na disku.
U slučaju upo trebe prorijeđenih d atoteka , to znači da možete imati datoteku koja je naizgled velika 1 0 GB , ali od tih 10 GB , ako
stvarnih podataka ima samo 1 GB, na disk će se zapisati samo tih 1 GB (konkretnih) podataka .
Pogledajmo logičk i izgled prorijeđene datoteke na sli ci 14 .

Slika 14. Logičk i pogled na prorijeđen u ( Sp arse ) datoteku.

Prepoznavanje i upotreba prorijeđenih datoteka može biti osobito korisn a u situacijama u kojima se puni kapacitet datoteke možda
nikada u potpunosti neće is koristiti. Jedna od takvih situacija je virtualizacija odnosno diskovi virtualnih strojeva. Naime kod
virtualnih strojeva (računala), disk virtualnog stroja je zapravo datoteka na fizičkom računalu odnosno na poslužitelju za
virtualizaciju. Ta dat oteka je virtualnom stroju vidljiva kao normalni disk, koji je prvo potrebno particioni rati , a potom i
formatirati. Normalno je da se u procesu formatiranja zauzima određeni postotak od ukupnog kapaciteta diska ( cca . do 5%), a u
standardnom procesu formatiranja cijela površina diska neće se popuniti s podacima, osi m s onima potrebnim za sâmo
formatiranje. Međutim niti nakon tog trenutka cijela površina diska nije popunjena s više od navedenih 5% zbog s âmog
formatiranja. Prema tome nisu niti zapisane nule u prazna područja (osim u slučaju punog formatir anja). Doda tno, ako i dalje u
radu virtualni s troj nikada ne popuni disk u potpunosti, to znači da određena količina diska nika da neće sadržavati ništa osim
eventualno nula u njemu , što u konačnici omogućuje uštedu prostora na disku , pomoću tehnologije prorijeđenih datotek a .

Što se događa u inicijalnom trenutku kreiranja ovakve datoteke?
Operativni sustav koji podržava prorijeđene datoteke kreira ovakvu datoteku, koja je zapravo prazna, odnosno naznačeno je da
je popunjena blo kovima nula. Čim neki blok sadrži podatke, pod aci se zapisuje na disk na odgov arajući na čin i datoteka na dis ku
raste. Osim vrlo korisne upotreb e, naročito kod virtual izacije, postoje i n eki potencijalni problemi s korištenjem prorijeđenih
datoteka. Najočigledniji bi bio u slučaju kada korisnički program ili Li nux naredba ne prepoznaje ili ne zna koristiti prorijeđene
( sparse ) datoteke. Rezultat ovakvog rada bi bio da u gornjem slučaju kada imamo prorijeđenu datoteku od 10GB, ali koja je
iskorištena samo 1GB te nakon upotrebe n ašeg „problematičnog“ programa ili naredbe ona odjednom naraste n a stvarnih 10GB.
Čak i programi koji mogu i znaju raditi s prorijeđenim datotekama, to im uglavnom mora biti izričit o rečeno.

Drugi problem je u tome što se sve vezano za upravljanje m diska temelji se na tome da se koriste sektori ili blokovi na disku, a
veličina diska prijavljena za prorijeđenu datoteke je puna veličina datoteke , a ne stvarni broj blokova na disku. To također znači
da će bilo koji program koji radi isključivo s blokovima na disku (npr. naredba du ) prijaviti drugačije vrijednosti (veličine) od
ostalih programa i li servisa. Još je dan problem je : prepoznaju ili backup programi i snimaju li ispravno u ili s prorijeđen im
datotekama. Backup program koji ne pr epoznaje (i nepravilno koristi) prorijeđenu datoteku za rezultat ima već navedeni primjer
u kojemu mala prorijeđena datoteka od 1GB odjednom naraste na 10GB te za nju eventualno više nema prostora za pohranu.

92

Da biste pomoću naredbe ls dobili stvarnu veličinu prorijeđene datoteke umjesto samo veličine datoteke koja je prijavljena
sustavu, potrebno je koristiti i prekidač -s . Pogledajmo kako:
ls -lsh

total 36K
24K -rw-r--r-- 1 root root 22K Jun 2 09:42 file.out.txt
4.0K -rwxr-xr-x 1 root root 68 Jun 1 16:32 generator.sh
Blokovi koji se koriste u lijevom stupcu ( total ) su kilobajti ( KB ) korišteni za alociranje blokova na disku. Veli čina s âmih
datoteka, koja je prij avljena sustavu je vidljiva u šestom stupcu. Ako usporedimo veličinu alociranih blokova i prijavljenu v eličinu
datoteka vidimo kako se radi o normalnim datotekama odnosno o vdje nema prorijeđenih ( sparse) datoteka.
Stvaranje sparse datoteka u osnovi je jednostavan proces za koji ćemo koristiti n aredbu dd .
S naredbom dd kre ira t ćemo datoteku, s generatorom nula /dev/zero kao ulazom ( if= ) te skačemo na poziciju 10 GB dalje
( seek=10G ). Na ovaj način je kreira na prazna datoteka, koja kreće s nulama, te skače na poziciju 10GB dalje. Zbog toga je
njena vidljiva veličina +10GB stvarna jer Linux podržava prorijeđene datoteke, a u stvarnoj upotrebi je samo 8KB.
To znači kako ona zapravo zauzima samo dva bloka od 4KB na površini diska .

Prisjetimo se da je standardna veličina bloka 4KB (ovo je zapravo veličina klastera) !

U primjeru koji slijedi kreirati ćemo navedenu sparse datoteku imena: sparse-file veličine 10GB, pomoću naredbe dd
dd if=/dev/zero of=sparse-file bs=1 count=1 seek=10G

1 byte (1 B) copied, 5.0734e-05 s, 19.7 kB/s
Pogledajmo što smo dobili:
ls -lsh

total 36K
24K -rw-r--r-- 1 root root 22K Jun 2 09:42 file.out.txt
4.0K -rwxr-xr-x 1 root root 68 Jun 1 16:32 generator.sh
8.0K -rw-r--r-- 1 root root 11G Jun 2 09:43 sparse-file
V idljivo je da je naša prorijeđena datoteka prijavljene veličine 11GB , ali da u blokovima (prv i stupac lijevo) zauzima samo
8.0K B jer je potpuno prazna . Dakle ona stvarno od datotečnog sustava alocira sa mo 8KB .
Usporedimo nekoliko Linux naredbi i njihovu “svjesnost” o prorijeđenim datotekama.

Naredba du
Naredba du (engl. disk usage ) nam daje podatak o vel ičini datoteka na disku ; unutar nekog direktorija ili rekurzivno i za sve
pôddirektorije u nutar trenu tnog direktorija (naravno i z a sve datoteke). Sve inačice ov e naredbe svjesne su prorijeđenih dato teka,
ali je moguće vidjeti i veličine koje su prijavljen e sustavu kao neprorijeđene . Pogledajmo kako to vidjeti :
du -hs

40K .
Dakle zauzeće u trenutnom direktoriju s jednom prorijeđenom datotekom od 11GB je zapravo 40KB.
Sada pogledajmo kako se ovakva datoteka vidi inače na sustavu (prekidač --apparent-size ), primjerice s naredbom ls :
du -hs --apparent-size

11G .
Sada vidimo da je vidljiva veličina 11GB jer se sada u prikazu ne prepoznaju prorijeđene datoteke.

Naredba tar
Naredba tar koristi se za kreiranje arhive, s time da ona ima mo gućnost i komprimiranja iste arhive “u letu”.

Za više informacija o programu /naredbi tar i njegovim mogućnostima pogledajte poglavlje o arhiviranju:
8.1 . Arhiviranje, komprimiranje i dekomprimiranje .
Naredba tar je jedna od onih kojoj se mora reći da su u pitanju sparse datoteke, ako radimo s njima .
Izradimo nekomprimiranu TAR arhivu, u ovom slučaju naziva: sparse-file.tar , od naše sparse datoteke: sparse- file
tar -cv -f sparse-file.tar sparse-file

Kreiranje ovakve arh ive koja nije svjesna sparse datoteka, će potrajati, kao i njeno kasnije ekstra h ira nje; možda i satima , sve
ovisno o brzini računala/poslužitelja. Pogledajmo što smo dobili?
ls -alhs

6.1G -rw-r--r-- 1 root root 6.1G Jun 2 14:16 sparse-file.tar
Dobili smo arhiviranu datoteku koja je veličine 6.1GB i koja na disku za uzima također 6.1GB . Dakle dokazali smo da se ovakvom
primjenom ne koristi mehanizam za prorijeđene datoteke ( sparse files ).
Sada probajmo napraviti slično; ime arhive će sada biti: sparse-file-S.tar , ali dodajmo tar -u spoznaju kako se radi o
sparse datoteci, pomoću dodatnog prekidača -S .

93

Stoga napravimo tar arhivu na sljedeći način :
tar -cvS -f sparse-file-S.tar sparse-file

Pogledajmo i š to smo sada dobili:
ls -alhs

12K -rw-r--r-- 1 root root 10K Jun 2 14:16 sparse-file-S-.tar
Ovdje imamo posve drugačiji rezultat ; veličina u blokovima na disku je samo 12KB , dok je vidljiva veličina 10KB .
U svakom slučaju razlika je vidljiva i jasno je da se sada koristio sparse mehanizam .

Probajmo sada uključiti i gzip komprimiranje, pomoću prekidača -z , ali bez sparse podrške:
tar -czv -f sparse-file.tgz sparse-file

Rezultat će biti datoteka sparse-file.tgz koja je zapravo GZIP komprimirana TAR arhiva.
ls -alhs

10M -rw-r--r-- 1 root root 10M Jun 2 14:11 sparse-file.tgz
Sada smo dobili znatno manju arhivu, ali koja kada se bude ekstraktirala, biti će veličine 10GB , što baš i ne želimo.

I na kraju napravimo slično kao u prethodnom primjeru, ali ponovno uključimo podršku za sparse ( -S ) na sljedeći način :
tar -czvS -f sparse-file-S.tgz sparse-file

Te pogledajmo kako to ovaj puta izgleda:
ls -alhs

4.0K -rw-r--r-- 1 root root 138 Jun 2 14:14 sparse-file-S.tgz
U ovom primjeru smo dobili malu arhivu, koja je svjesna prorijeđenih datoteka ( 4KB u blokovima i 138 bajta), te će ona, kada
bude ekstraktirana (dekomprimirana) također zadržati sparse svojstva.

Naredba cp
Linux naredba cp za kopiranje datoteka ili direktorija u većini slučajeva standardno može kopirati i prorijeđene datoteke.
Ona na osnovi heurističke analize datoteke, može zaključiti radi li se o običnoj ili prorijeđenoj datoteci.
Naime ona prije kopiranja prvo provjerava ima li datoteka dovoljno veliki n î z nula u sadrž aju, te ako ima, smatra se prorijeđenom
datotekom i kao takva se dalje koristi .

Iako, da bi bili potpuno sigurni da će sparse datoteka biti ispravno prekopirana, možemo koristiti prekidač – -sparse=always

Pogledajmo kako to napraviti :
cp --sparse=always sparse-file /root/test/new-directory

Provjerimo je li se sve prekopiralo kako treba i kolika je stvarna v eličina datoteke na disku ( -s prekidač) :
ls -alhs

8.0K -rw-r--r-- 1 root root 11G Jun 2 09:43 sparse-file
Dakle sve je u redu, jer je stvarno zauzeće diska (prvi stupac) samo 8 KB .

Naredba rsync
Naredba rsync odnosno program za izradu sigurnosnih kopija, između cijelog n î za mogućnosti, podržava i sparse datoteke.

Za primjere i više detalj a o ovoj naredbi pogledajte poglavlje: 8.1.2 Naredba rsync

Programi poput: scp , ftp , sftp i pax ne podržavaju sparse datoteke!.

Naredba df
Naredba df za prikaz za uzeća prostora na disku prema (montiranim) particijama prikazuje stvarno za uzeće blokova na disku
odnosno prikazuje stvarno alociran prostor, što znači kako je svjesna sparse datoteka.
Za druge primjere upotrebe naredbe df pogledajte poglavlje: 13.10.2 . Naredba df .

Za detalje o određenoj datoteci možemo koristiti i naredbu filefrag , primjerice ovako:
filefrag -v sparse-file

Izvori informacija: [ 139 ],[ 674 ], man ls,man dd,man df,man du,man tar,man cp,man rsync,
man filefrag.

94

4.7. Format datoteka ( MIME type )
Datoteke se osim po već navedenim posebnim vrstama, razlikuju i po unutarnjem formatu koji kategorizira unutarnja struktura
podataka zapisanih u datoteku.
Na operativnim sustavima Windows , format datoteke definira njena ekstenzija; primjerice datoteka imena: film.mp4 se
identificira od strane sustava kao video datoteka u kojoj je video sadržaj komprimiran i ( en ) kodiran pomoću MPEG -4 algoritma
( codec-a ). Isto tako se primjerice datoteka s ekstenzijom .mp3 identificira kao glazbena datoteka ( mp3 ), a datoteka s ekstenzijom
.html , kao HTML (web) dokument i tako dalje .

Međutim na operativnim sustavima Unix i Linux razlučivanje datoteka prema ekstenziji nije nužno i potre bno. Unix i Linux
operativni sustavi prvo provjeravaju ekstenziju datoteke i uspoređuju ju s definicijom koja se nalazi u datoteci
/etc/mime.types . Ova datoteka dolazi u softverskom paketu imena mailcap .

U navedenoj datoteci popisane su sve pripadnosti ekstenzija s pripadajućim kategorijama aplikacija.
U ovu datoteku se zapisuju identifikatori na sljedeći način: kategorija/vrsta ekstenzija . Pogledajmo par unosa u njoj:
text/plain txt asc text pm el c h cc hh cxx hxx f90 conf log
video/mp4 mp4 mpg4 m4v
application/gzip gz tgz
Asocijacije s kojim programom se otvara koja kategorija ekstenzije se definira ju ovisno o (grafičkom) sučelju koje koristimo.
Međutim u slučaju kada datoteka nema ekstenziju (ili nema ove mime datoteke) , Unix/Linux radi sljedeće. Na ime svaka od
datoteka, ovisno o svom unutarnjem formatu podataka, odnosno pripadnosti, unutar sebe nosi zapis u kojemu se nalazi opis
njenog unutarnjeg formata.

U grubo, postoje dvije kategorije datoteka :
• O bične tekstualne datoteke; poput shell i drugih skripti: koje u prvom re tku (liniji) datoteke sadrže definiciju s kojim
programom (ili ljuskom) se moraju pokrenuti.
• Binarn e datotek e – one koje sadrže binarne podatke (sve osim standardnog teksta ).

Svaka binarna datoteka ( obično svaka ona koja nije tekstualna) u svom zaglavlju odnosno u barem prvih nekoliko
blokova od obično osam (8) bajta, mora sadržavati identifikatore o kojem formatu odnosno vrsti internog sadržaja se radi.

Ako pogledamo navedenu binarnu datoteku imena: film.mp4 , ali ne s uređivačem teksta već isključivo s nekim
heksadecimalnim preglednikom; primjerice sa: hexdump , od ili xxd vidjet ćemo i njen stvarni (binarni) sadržaj .
Stoga pogleda jmo sâ mi početak datoteke i to prvih pet (5) redaka (ovdje je po 16 bajta u jednom r e tku), pomoću naredbe xxd :
xxd -l 0x50 film.mp4

00000000: 0000 0020 6674 7970 6973 6f6d 0000 0200 ... ftypisom....
00000010: 6973 6f6d 6973 6f32 6176 6331 6d70 3431 isomiso2avc1mp41
00000020: 0000 0008 6672 6565 0000 75f8 6d6f 6f76 ....free..u.moov
00000030: 0000 006c 6d76 6864 0000 0000 7c25 b080 ...lmvhd....|%..
00000040: 7c25 b080 0000 03e8 0000 6da9 0001 0000 |%........m.....

. . . slijedi sadržaj datoteke (MPEG -4 video) . . .

Već u prvom retku vidimo osnovne podatke o ovoj datoteci:
• ftyp (HEX: 66 74 79 70 ) – znači kako se radi o „ QuickTime Container “ formatu odnosno vrsti datoteke.
• isom (HEX: 69 73 6f 6d ) – znači kako se radi o pôd formatu ( A ) : “ MP4 Base Media v1 ( B )( C ) “ .
• avc1 (HEX: 61 76 63 31 ) – znači kako se radi o video datoteci koja je komprimirana i kodirana pomoću AVC1
algoritma, što se odnosi na H.264 odnosno MPEG-4 Part 10 format .
• mp41 (HEX: 6d 70 34 31 ) – konkretno označava upravo MPEG-4 Part 10 format zapisa.
• O statak nećemo dalje analizirati.

Ovdje je v idljivo da svaki heksadecimalni nî z od osam (8) bajta na određenoj poziciji ( offsetu ) identificira određeni dio formata
odnosno, ako gledamo sâ m početak datoteke, prvih nekol iko bajta definira format datoteke, kako je navedeno u izvoru informacija
[ 788 ] .
Ovih prvih nekoliko bajta u zaglavlju svake binarne datoteke se z ove čarobni broj ( engl. magic number ) datoteke.
Jasno je da svaki format datoteke mora imati točno definiranu strukturu kao i opisnik sadržaja datoteke u zaglavlju .

Kako bi se datoteke različitih formata; primjerice: MP3 , MP4 , HTML , JPG , DOC i druge , uopće mogle uredno zapisivati, ali i
kasnije čitati, čak i neovisno o opera tivnom sustavu, format datoteke mora biti definiran nekim st andardom.

95

Standardizacijsko tijelo koje definira standarde zapisa (formata) datoteka je IANA .
Pogledajte izvor informacija : [ 785 ].

Na Linuxu, postoji datoteka u kojoj su pohranjeni „ magi c numbers ” oznake , a to je datoteka: /usr/share/misc/magic
koja dolazi u softverskom paketu imena; file-libs . U njoj su pohranjeni svi ovi „ čarobni brojevi “ uz pripadajuće opise.

Ako i sâ mi želimo provjeriti o kojem se for matu dat oteke radi, to možemo na praviti s naredbom file , koja (indirektno)
kontaktira ovu datoteku.
N a sljedeći način možemo provjeriti kojeg formata je , već navedena datoteka imena: film.mp4
file film.mp4
I dobit ćemo lijepo formatirane informacije o ovoj konkretnoj MP4 ( MPEG 4) datoteci, koje smo već ob jasnili.

Vrsta odnosno format podataka unutar datoteke je prvi puta definiran kao takozvani „ MIME type“ odnosno
„ Multipurpose Internet Mail Extensions “, za potrebe ubacivanja privitaka u elektroničku poštu , ali je kasnije prihvaćen kao
standard za defin iciju formata datoteka . S time da se ovdje pod formatom misli na točnu definiciju zaglavlja te osnovnu definiciju
ostatka koji slijedi; poput načina ( en )kodiranja i zapisivanja podataka koji slijede nakon početnog zaglavlja datot eke .

Sve dalje od toga u datoteci (ono što od podataka slijedi) definira se na razini sâme aplikacije koja i treba koristiti te podatke.

Vezano za elektroničku poštu, pogledajte i poglavlje:
25.8.8 . Elektronička pošta (e -mail).

Vezano za ( en )kodiranje, pogledajte i poglavlje:
10.3.2.1 . Kodiranje i dekodiranje.

Izvori informacija:[ 780 ],[ 781 ],[ 782 ],[ 783 ],[ 784 ],[ 785 ],[ 786 ],[ 787 ],[ 788 ],[ 1135 ],[K-12], man file , man magic, RFC 6838

CSV format datoteka
U ovoj cjelini upoznat ćemo se s jednim od često korištenih formata datoteka koji se naziva CSV (eng. Comma-separated values ).
U doslovnom prijevodu ovaj format naznačava kako se radi o tekstualnoj datoteci unutar koje se dijelovi teksta razgraničavaju
odnosno delimitiraju (obično) pomoću znaka zarez ( , ). Ovdje se radi o tekstualnoj datoteci koja koristi zarez za odvajanje
vrijednosti. Svaki redak ove datoteke predstavlja novi zapis podataka . Svaki se zapis sastoji od jednog ili više polja, odvojenih
zarezom. Upotreba zareza kao separatora polja uzrok je naziva za ovaj format dato teke (engl. comma =zarez) .

CSV datoteka obično pohranjuje tablične podatk e (brojeve i tekst) u običnom tekstu, a u tom će slučaju svaki redak imati jednak
broj polja. CSV format datoteke nije u potpunosti standardiziran.

Osnovna ideja razdvajanja polja teksta zarezom ( , ) je jasna, ali situacija se komplicira kada podaci polja sadrže i zareze ili
ugrađene prijelome redaka (kraj retka) koje bi u pravilu trebali izbjegavati. Naime ovisno o implementaciji CSV - a, možda se neće
obrađivati takvi podaci (s navedenih problematičnih polja) ili se mogu upotrijebiti navodnici za označavanje takvih polja.

Osim standardno definiranog znaka z arez kao separatora ( , ), moguće je koristiti i neki drugi znak, poput primjer ice znaka točka
zarez ( ; ) ili nekog drugog (pr. : ) , sve ovisno o našim potrebama.

96

U ovom tekstualnom CSV formatu se zapisuju mnoge sistemske, ali i druge d atoteke na sus tavu, poput r aznih log datotek a i
mnogih tablica. Prvo pogledajmo kako izgleda jedna tablica u programu LibreOffice Calc , na slici 14.1. .
Slika 14.1. Pogled na tablicu s ocjenama u programu LibreOffice Calc

U ovoj tablici s ocjenama za pre dmet Osnove Linuxa vidimo stupce koji redom predstavljaju: ime, prezime i ocjen u, a ispod njih
u svakom novom redu se nalaze ime, prezime i ocjena koju je svaki poj edini učenik dobio za zalaganje na predmetu.

Međutim tablični kalkulatori poput programa LibreOffice Calc ili Microsoft Excel osim ovih vidljivih podataka, odnosno uz
sâmu tablicu s podacima, mogu zapisivati (i zapisuju) i prateće podatke, poput:
• Fonta teksta te veličine fonta, kao i boje s kojom je obo jan svaki red, stupac ili pojedino polje .
• Formula koje koristimo; primjerice za razne izračune, poput prosjeka ocjena i sl ično, te mnoge druge meta podatke .

U konač nici, jednostavna tablica poput ove se pri snimanju u form at specifičan za svaki program, primjerice: za LibreOffice Calc
je to format ODS , dok je za MS Excel to XLS ili X LSX format , zbog snimanja i mnogih pratećih odnosno takozvanih meta
podataka, pretvara u teže čitljiv format od običnog CSV -a.
Ipak, mogu će j e i iz navedenih programa LibreOffice Cal c i MS Excel i zvesti (sni miti) tablice u običnom CSV for matu, ali ćemo
pri tome izgubiti sve navedene prateće odnosno meta podat ke .

Na kraju će u konačnoj CSV datoteci ostati samo osnovna tablica s vidljivim stupcima i redovima, bez formula, fontova, boja i
slično. Sada pogledajmo istu tablicu u CSV (tekstualnom) formatu:
Ime,Prezime,Ocjena
Ana,Anić,4
Marina,Horvat,4
Pero,Perić,4
Luka,Lukić,2

Važno je razumjeti kako je sa cij elim nîzom programa koje standardni imamo dostupne u Linuxu, ekstremno lakše raditi upravo
s ovakvim CSV tekstualnim formatom, pa ga je m oguće pretraživati, filtrirati, mijenjati ili raditi bilo što drugo.

Samo neke od sistemskih Linux datoteka koje koriste CSV format su:
• /etc/passwd – sadrži informacije o korisničk im računaim na sustavu .
• /etc/shadow – sadrži hash vrijednost lozinki za korisničke račune.
• /etc/group – sadrži informacije o korisničkim grupama.
• … i mnoge druge, kao i sve log datoteke .

CSV format datoteka je definiran u RFC 4180 .

Za primjere rada s CSV datotekama, pogledajte slijedeća poglavlja :
5.7.1 . Naredba grep .
5.7.2 . Naredba cut .
5.7.3 . Naredba awk .
5.7.6 . Naredbe join i paste .
5.7.7 . Sortiranje sadržaja: naredba sort .

Izvori informacija: [ 975 ], RFC 4180.

103

Pražnjenje (brisanje) sadržaja datoteka
Prvi najjednostavniji način pražnjenja (sadržaja) datoteke je koristeći naredben i redak tako da preusmjerimo tzv. null
(nepostojeći objek at) u datoteku, kao u nastavku:
> large-file

Upotreba naredbi cat, cp i dd
Prisjetimo se kako posebna datoteka /dev/null zapravo uklanja (briše) svaki ulaz u nju (ili izlaz iz nje).
U tu svrhu možemo ju iskoristiti tako da njen izlaz preusmjerimo u datoteku, što možemo napraviti:
cat /dev/null > large-file

Ili čak kopiranjem njenog sadržaja u datoteku:
cp /dev/null large-file

Ili korištenjem nje kao ulaza u naredbu dd te izlaz om u željenu datoteku čiji sadržaj želimo obrisati::
dd if=/dev/null of=large-file

Upotreba naredbe echo
Naredba echo se koristi za ispis sadržaja (teksta, vrijednosti varijabli i slično) na terminal , ali i nju možemo koristiti uz
preusmjeravanje (redirekciju), za brisanje sadržaja datoteke:
echo ”” > large -file

Ili direktnom redirekcijom :
echo > large-file
Gornja dva primjerna u odredišnu datoteku će pr eusmjeravanjem ( redirek cijom ) dodati prazan redak i to sa znakom za kraj
retka (heksadecimalno 0A – tzv. Line Feed ).
Stoga pogledajmo ovu datoteku nakon ovakvog pražnjenja nj enog sadržaja, pomoću heksadecimalnog preglednika odnosno
pomoću naredbe hexdump , filtrirano s naredbom head . Dakle unutar ovakve datoteke biti će vidljivo sljedeće:
hexdump large-file | head
0000000 000a
0000001
 Jasno je vidljivo da je u prvi redak datoteke dodana heksadecimalna oznaka 0A .

Dodano je moguće naložiti naredbi echo da šalje prazan izlaz (bez oznake za novi redak):
echo - n ”” > large -file
Ako ponovno pogledajmo ovu datoteku nakon ovakvog pražnjenja njenog sadr žaja, pomoću heksadecimalnog preglednika
odnosno pomoću naredbe hexdump , unutar ove datoteke sada će biti vidljivo samo sljedeće:
hexdump large-file | head
0000000
 Naime ovdje je sada vidljivo da je prvi redak datoteke potpun o prazan.

Upotreba naredbe truncate
Naredba truncate u Linuxu omogućuje smanjenje (ili povećanje) datoteka na o dređenu veličinu.
Ova naredba koristi sistemski poziv ( truncate ) s kojim je moguće smanjiti ili povećati datoteku na željenu veličinu iznimno
brzo.
Ako koristite truncate s izlaznom veličinom 0 ( - s0 ), možete potpuno isprazniti datoteku, kao u primjeru:
truncate -s 0 > large-file

Vezano za prorijeđene (sparse) datoteke, pogledajte poglavlje:
4.6 Prorijeđene ( Sparse ) datoteke.

Vezano za kreiranje i otvaranje datoteka (za čitanje ili pisanje) pogledajte poglavlje:
4.5.5.2 . File deskriptori i veza s inode-om.

Izvori informacija: man 2 fallocate,man fallocate,man 2 truncate,man truncate,man dd,
man seq,man hexdump,man head.

[Document text truncated for crawler view.]