scieee AI-readable full text Open interactive document viewer

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

Horvat, Hrvoje

Abstract

This book (in Croatian) covers operating systems and Linux, Storage and Networks (protocols & standards), virtualization, and Linux containers. Since this book is in a light but constant review and update process, please use the most recent version. This book may also be used to prepare/learn, or extend the knowledge needed for the next certifications: Red Hat®: Certified System Administrator (RHCSA®). Certified Architect (RHCA®). Linux Professional Institute®: LPIC-1. LPIC-2. LPIC-3*. Linux Foundation®: Linux Foundation Certified IT Associate (LFCA). Linux Foundation Certified System Administrator (LFCS). The book covers the following chapters (in summary): Principles of operating systems: basic mechanisms and way of working of operating systems. System administration: Work with user accounts and groups. System security configuration (file permissions, timestamps, ACL, SELinux ). Service management (installation, configuration, ...) Software/package management. Archiving and backup. Process management. Computer components and optimizations: Motherboard and chipset. Buses: PCI, PCI-X, PCI Express, USB, SMBus/I2C IRQ and DMA, ... CPU and RAM CPU architecture: Registers, instructions, and ISA. CPU microarchitecture. SMP and NUMA architecture and optimizations. Kernel: Purpose and design. Upgrade, configure, compile the new one, etc. Virtual memory subsystem, RAM memory, and optimizations: Types of RAM memory. Memory management and virtual memory subsystem. Out of memory (OOM) and optimizations. Data storage and disk subsystems: Types of disk drives and standards. Disk geometry and logical scheme. Block devices and partitioning, disk formats, and filesystems. RAID (hardware and software) and LVM2 NAS and SAN storage systems overview SAN storage systems: iSCSI Fibre Channel (FC) Disk I/O subsystems and optimizations. Disk I/O performance and monitoring System analysis and optimizations (perf, strace, ltrace, dstat). Working with log files and services. Kernel dump/core dump. Computer networks: Copper vs Optical networks: Copper: cabling and standards. Fiberoptics: standards, cabling, FTTH specifics. Network interfaces (NIC) design and details, classic (copper) NICs (RJ-45), and SFP specifics. Networking concepts and protocols (topology, CSMA/CD, Bridging, OSI model): OSI 2 model and protocols: Bridges, ARP, and Flow control. STP, LACP, LLDP, OSI 2 network interfaces,.... OSI 3 model and protocols: IP, QoS, IP Fragmentation. TTL, MTU. NAT (DNAT, SNAT). Redundancy and VRRP, .... Transport layer: UDP TCP: SYN, ACK, SACK. TCP Window, Window scaling, congestion control. PSH&URG, ... . Network in Linux (configuration and details). Optimizing network interfaces and services for 10+Gbps (10/25/100Gbps) Common network commands: traceroute, nslookup. netstat, nstat, ss, lsof. ip, ethtool. tcpdump. Network services and protocols: DHCP, TFTP, DNS. Telnet and SSH. HTTP/HTTPS, NTP, Proxy. Work with the firewall: iptables ipset nftables eBPF Namespaces and isolation Virtualization and Linux containers: LXC Podman Many extras: list of Linux commands, list of terms, list of important files, interface bandwidth, ... Advanced and expert chapters as an addition to all the mentioned chapters and units. Posters covering major chapters of the book (with links to the posters at the end of the book). Who may use this book: Books cover the work in the Linux text environment (shell/CLI). It is intended for everyone with very little or no experience with Linux. Additionally, almost every major section of the book contains advanced chapters, so the book can be useful for advanced users in order to understand or optimize the Linux system in more detail. Furthermore, many of the advanced chapters have been further expanded for those looking for expert details and examples. Therefore, this book can also be used for practical learning about the principles of operation of operating systems in general, provided that, of course, we are talking about Linux and we offer examples from Linux, through which it is much better to get to know each operating system and its mechanisms. This book can be used by students, to learn the principles of operating systems, people who are new to it and want to get familiar with Linux, and those who want to deepen their knowledge of Linux, or even experts, who occasionally want to recall some advanced Linux components. Additionally, everyone who wants to get to know the basics of computer networks and the details of the TCP/IP protocol, as well as those who are interested in configuration and expert details and possible optimizations at the network disk or other level operating system subsystem, will find this book useful. The book begins with examples of the use of various useful programs (commands) that are specific to the whole being discussed, and is expanded with theory and more advanced examples. This was the guiding principle for most chapters where that order or mode was applicable. And at the very end, chapters were added in which we introduce virtualization and Linux containers and security technologies, and notes; from theory to practical examples in Linux.

Full text

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, dnsma sq, V IM , G NU PG (GPG), Drupa l, 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 fotografiju il i ilustraciju Broj riječi u knjiz i: 751679 Broj stranica knjig e: 1479 Broj ilustracij a i slika u knjizi : 393 Broj Linux nar edbi i programa koji se spomi nju u knjizi: 412 Broj izvora inform acija korištenih u knjizi : 2.6 89. Radna inačica publik acije : 2.6.162. Autor : Hrvoje Horvat Naklada : vlastita naklada Tisak: elektroničko izda nje ( PDF ) Grafičko oblikovanje naslovnice: Ana Horvat Mjesto i godin a izdavanja: Osijek, listopada 2025. godi ne. Izdavač: Hrvoje Hor vat ISBN : 978 – 953 – 59438 – 2 – 2 DOI: 10.5281/zenodo.17259621 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 .................................................................... 62 Ovlasti kod kreir anja nove datoteke ili direkt orija i naredba umask .......................................... 62 Napredne ovlasti (atributi) te naredbe lsattr i chattr ................................................................ . 65 To nije sve: mogućnosti izv ršavanja datoteka i programa ( capabilities ) .................................... 66 Niti to nije sve - Access control list (ACL) ................................................................................... 67 4.5. Datotečni sustav detaljnije ................................................................ ............................. 69 Hard Linkovi ................................................................................................................................ 72 Soft linkovi .................................................................................................................................. 73 Oznake vreme na ( timestamps ) ................................ ................................................................... 74 Opisnici datoteke ( File deskriptori) ................................ ............................................................. 76 File deskriptori detaljnije ................................................................ ............................................ 77 4.5.5.1. File deskriptori i naredba lsof ................................................................................................ . 79 4.5.5.2. File deskriptori i veza s inode- om ........................................................................................... 80 Ograničenja sustava i nared ba ulimit .......................................................................................... 82 4.5.6.1. Ograničavanje File deskriptora ............................................................................................... 82 4.5.6.2. Ograničenja procesa ............................................................................................................... 83 4.5.6.3. Ulimit - dru ga ograničenja ...................................................................................................... 84 Datoteka limits .conf i druga ograniče nja sustava ............................................................. 84 Naredba sysctl ............................................................................................................................. 86 Naredba fuser ............................................................................................................................. 87 4.6. Prorijeđene ( Sparse ) datotek e ........................................................................................ 89 4.7. Format datoteka ( MIME type ) ........................................................................................ 92 CSV format datoteka ................................................................ ................................................... 93 5. Osnove rada u Linuxu ............................................................................................. 95 5.1. Rad s nekim od osnovnih Linux/Unix naredbi ................................................................ . 95 5.2. Naredbe za rad s direktorijima i datotek ama .................................................................. 96 Naredbe: cd , ls , pwd , mkdir , cp, mv i rmdir ................................................................................ 96 5.3. Kreiranje datoteka ......................................................................................................... 99 Napredno kreiranje i brisanje (sadržaja) datoteka ................................................................... 100 5.4. Naredbe za izlistanje sadržaja datotek a ........................................................................ 102 5.5. Rad s datotekama ........................................................................................................ 103 5.6. Uređivač teksta vi ......................................................................................................... 105 5.7. Rad sa sadržajem datoteka ........................................................................................... 107 Naredba grep ............................................................................................................................ 108 Naredba cut .............................................................................................................................. 110 Naredba awk ............................................................................................................................. 111 5.7.3.1. Awk print nare dba ................................................................................................................ 111 5.7.3.2. Awk varijable ................................................................ ........................................................ 112 5.7.3.3. Awk funkcije i for petlje ........................................................................................................ 113 5.7.3.4. Awk uvjeti ............................................................................................................................. 114 5.7.3.5. Awk polja ( Arr ay ) .................................................................................................................. 115 5.7.3.6. Awk pretraživanje ................................................................................................................. 116 IV 5.7.3.7. Awk aritmetič ke operacije i operatori .................................................................................. 116 Naredba sed .............................................................................................................................. 117 5.7.4.1. Sed zamjena stri ngova .......................................................................................................... 117 5.7.4.2. Sed brisanje st ringova ........................................................................................................... 118 Naredba tr ................................................................................................................................ . 119 Naredbe join i paste .................................................................................................................. 122 Sortiranje sadržaja: nared ba sort .............................................................................................. 126 5.8. Usporedba sadržaja datoteka ....................................................................................... 127 5.9. Traženje datoteka ........................................................................................................ 129 Naredba whereis ....................................................................................................................... 129 Naredba which .......................................................................................................................... 130 Naredbe locate i updatedb ....................................................................................................... 130 Naredba find ............................................................................................................................. 131 Naredba xargs i ogra ničenje duljine argumenata ..................................................................... 133 5.10. Preusmjeravanje ( redirek cija ) i Pipe funkcionalnost .................................................. 135 Preusmjeravanje ( re direkcija ) ................................................................................................... 136 Pipe funkcionalnost za povezivanje naredbi ............................................................................. 137 5.11. Meta znakovi ............................................................................................................ 138 Značenje nekih meta z nakova ................................................................................................... 138 5.12. Regularni izrazi ......................................................................................................... 138 Regularni izrazi i meta znakovi ................................ .................................................................. 141 5.12.1.1. Upotreba meta zna ka za komentar # ............................................................................... 141 5.12.1.2. Upotreba navodnika ‘ “ ` (jednostruki, dvostruki i jed nostruki kosi) ......................... 141 5.12.1.3. Upotreba ugla tih [ ] zagrada ............................................................................................ 142 5.12.1.4. Upotreba vitič astih { } zagrada ......................................................................................... 145 5.12.1.4.1. Posebne varija ble bash ljuske ...................................................................................... 146 Drugi napredni pri mjeri upotrebe bash ljusk e .......................................................................... 146 6. Shell skripte ........................................................................................................... 148 6.1. Kako rade Shell skripte ................................................................................................ . 148 6.2. Varijable ....................................................................................................................... 151 Standardne odnosno obič ne varijable ...................................................................................... 151 Sistemske ( Envir onment ) varijable i postavke terminala .......................................................... 152 6.2.2.1. Posebne siste mske varijable ................................................................................................ . 156 6.2.2.2. Ugrađene, posebne var ijable ljuske ..................................................................................... 157 Varijable polja ( Arra y variable ) ................................................................................................ . 157 6.2.3.1. Brisanje polja i li elemenata polja ......................................................................................... 158 Operacije nad vari jablama ................................................................ ........................................ 158 6.2.4.1. Rad s uzorcima od vrijednosti var ijable ................................................................................ 158 6.2.4.2. Izvlačenja dijel a vrijednosti varijable .................................................................................... 159 6.3. Parametri pozicije ........................................................................................................ 159 6.4. Upotreba okruglih zagrada ( ) ....................................................................................... 160 Jednostruke okrugle zagra de .................................................................................................... 160 Dvostruke okrugle za grade (()) ................................................................................................ . 161 Redirekcija (preusm jeravanje) i okrugle zagr ade ...................................................................... 162 6.5. Uvjeti ........................................................................................................................... 162 6.6. Petlje ........................................................................................................................... 164 XI 13.11. RAID polja diskova .................................................................................................... 649 Hardverski RAI D .................................................................................................................... 650 13.11.1.1. Pogled na nižu r azinu diska .............................................................................................. 652 13.11.1.2. Softverski RAI D ................................................................................................................. 653 13.11.1.3. Koja su najčešć a RAID polja u upotrebi i koje su im prednosti i mane? ........................... 653 13.11.1.4. Standardna RAID polja ..................................................................................................... 654 13.11.1.4.1. RAID 0 ........................................................................................................................ 654 13.11.1.4.2. RAID 1 ........................................................................................................................ 655 13.11.1.4.3. RAID 5 ........................................................................................................................ 655 13.11.1.4.4. RAID 6 ........................................................................................................................ 657 13.11.1.5. Ugniježđena R AID polja .................................................................................................... 658 13.11.1.5.1. RAID 0+1 .................................................................................................................... 658 13.11.1.5.2. RAID 10 ...................................................................................................................... 659 Softverski RAID (L VM2) ......................................................................................................... 660 13.11.2.1. Kreiranje LVM polja .......................................................................................................... 662 13.11.2.2. Kreiranje LVM Physical Storage Device a .......................................................................... 663 13.11.2.3. Kreiranje LVM Volume grupe ................................ ........................................................... 664 13.11.2.4. Formatiranje LVM polja ................................................................................................... 666 13.11.2.5. Proširi vanje kapaciteta LVM polja .................................................................................... 668 13.11.2.6. Brisanje LVM p olja ........................................................................................................... 670 13.11.2.7. LVM thin ........................................................................................................................... 670 Device Mapper (DM) i md (RAID) ................................ ......................................................... 672 13.11.3.1. Device Map per Multipath (Multipath I/O) ....................................................................... 674 Lažni (Fake/BIOS/Firmw are) RAID ........................................................................................ 677 13.12. NAS/SAN sustavi i druge tehnologije ........................................................................ 679 Storage Area Netw ork (SAN) ................................................................................................ 687 13.12.1.1. iSCSI .................................................................................................................................. 689 13.12.1.2. Fibre Channel ( FC) ............................................................................................................ 693 13.12.1.3. Usporedba SA N sustava: iSCSI vs. Fibre C hannel (FC) ...................................................... 703 14. Diskovni (I/O) podsustav ....................................................................................... 704 14.1. Diskovni ulazno/izlazni sustav ( I/O ) .......................................................................... 704 Sinkroni i asinkroni I/O .............................................................................................................. 710 Optimizacija Page C ache sloja .................................................................................................. 712 Optimizacija Filesystem sloja ................................................................ .................................... 715 Optimizacija Generic Blo ck Layera i I/O Sche dulera .................................................................. 716 14.1.4.1. Nove tehnologije na donjim slojevima I/O podsustava ................................................... 718 14.1.4.2. Nove tehnologije (nast avak) ................................ ............................................................ 721 Diskovni I/O sustav: primjeri ..................................................................................................... 724 14.1.5.1. Ograničenje diskov nih (I/O) performansi pro grama/procesa .......................................... 725 14.2. Praćenje performansi I/O sustava ............................................................................. 726 Još detaljnije praćenje I/O sustava ........................................................................................... 731 15. Analiza rada linux sustava i programa ................................................................... 735 15.1. Linux perf naredba ................................................................................................... 735 perf stat ..................................................................................................................................... 737 perf record ................................................................................................................................ 738 perf top ..................................................................................................................................... 741 perf i detaljnija analiza programskog koda ............................................................................... 741 15.2. Linux strace naredba ................................................................................................ 742 XII 15.3. Linux ltrace naredba ................................................................................................ . 744 15.4. Linux dstat naredba .................................................................................................. 744 16. Kernel Dump/Crashdump/core dump .................................................................... 746 16.1. Kako to radi .............................................................................................................. 746 16.2. Koji je proces pokretanja .......................................................................................... 746 16.3. Kernel učitava kernel ................................................................................................ 747 16.4. NMI ( Non-Maskable Interrup ts ) stanja ..................................................................... 748 17. Log datoteke ......................................................................................................... 749 17.1. Servis logrotate ........................................................................................................ 753 17.2. Datoteka /var/log/messa ges ........................................................................... 754 17.3. Datoteka /var/log/dmesg .................................................................................. 754 Kratka analiza problema na sustavu ......................................................................................... 756 SOS reporting ............................................................................................................................ 759 17.4. Datoteka /var/loge/secu re .............................................................................. 761 17.5. Journald, journalctl i dnevničke (l og) datoteke ......................................................... 762 18. X Window sustav ................................................................................................... 764 19. Mrežni sustav ........................................................................................................ 768 19.1. Topologija mreže ...................................................................................................... 769 Detaljnije o topologijama mr eže ............................................................................................... 770 19.2. Mrežni pojmovi ........................................................................................................ 776 Kablovi i konektori ................................................................ .................................................... 776 19.2.1.1. Bakar ................................................................................................................................ 776 19.2.1.2. Optika ............................................................................................................................... 782 19.2.1.2.1. Utikači i utičnice za optička vlakna .............................................................................. 787 19.2.1.2.2. Fiber to the Home (FTTH) ............................................................................................ 791 Mrežne kartice .......................................................................................................................... 796 19.2.2.1. Logička shema mre žne kartice ......................................................................................... 798 19.2.2.2. Small Form-factor (SFF) i Small Form-factor Pluggable (SFP) ........................................... 802 19.2.2.3. MDI i MDI-X ...................................................................................................................... 806 Brzina mreže ............................................................................................................................. 807 19.2.3.1. Širina komunik acijskog pojasa ( bandwidth ) ..................................................................... 807 19.2.3.2. Propusnost (throughput ) .................................................................................................. 807 19.3. CSMA/CD i nasljeđe prošlosti ................................................................................... 809 Što su MAC adres e .................................................................................................................... 810 19.4. Mrežni most i preklopnik ( Bridg e i switch ) ................................................................ 811 Metode preklapanja pa keta: cut-through i store and forwa rd ................................................. 812 19.5. Duplex ...................................................................................................................... 813 Half Duplex ................................................................................................................................ 813 Full Duplex ................................................................................................................................ 813 19.6. Auto Negotiation ................................................................ ...................................... 814 Konfiguracija brzine te duplex i auto negotiation način a rada ................................................. 815 XIII 19.7. Latencija odnosno kašnjenje ..................................................................................... 816 19.8. OSI model i TCP/IP model ......................................................................................... 818 TCP/UDP Portovi ....................................................................................................................... 819 Ugnježđivanje (Enkaps ulacija) .................................................................................................. 821 20. Kako radi mreža na OSI sloju 2 .............................................................................. 823 20.1. Oblik mrežnih okvira na O SI slojevima 2 i 1 ............................................................... 823 20.2. Usmjerivači koji rade na slojevima 3 i 4 te Mu ltilayer preklopnici ............................. 826 Dizajn preklopnika .................................................................................................................... 828 20.3. Ne blokirajući i blokirajući dizajn prekl opnika ........................................................... 830 20.4. Gbps i Mpps – u čemu je veza ................................................................................... 833 Mjerenja propusnosti be z ASIC sklopova .................................................................................. 839 Mjerenje propusnosti sa ASIC sklopovima ................................................................................ 841 20.5. Kontrola protoka ( flow co ntrol ) na OSI sloju 2 .......................................................... 843 20.6. Mrežna sučelja na OSI sloju 2 .................................................................................... 845 Mrežni most ( bridge ) odnos no premosnik ............................................................................... 845 20.6.1.1. Privremena konfigura cija bridge mrežnih su čelja ............................................................ 847 20.6.1.2. Trajna (permanentna) konfiguracija bridge mrežnih sučelja ........................................... 851 20.6.1.3. Bridge sučelje i VLAN fil triranje ........................................................................................ 852 VLANovi odnosno virtualne l okalne mreže ............................................................................... 855 20.6.2.1. Što se događa kod upotre be VLANova ............................................................................. 856 20.6.2.2. Format 802.1Q polja ........................................................................................................ 858 20.6.2.3. Rad s VLANovi ma pod Linuxom ........................................................................................ 859 20.6.2.4. Automatska propagacija VLANova ................................................................................... 863 TUN i TAP - posebna mrež na sučelja ........................................................................................ 864 VETH - posebno mrežno s učelje ............................................................................................... 865 Redundancija i Spannin g Tree protokol (STP) ........................................................................... 868 Redundancija i bon ding ( Agregacija/Etherchannel/T eaming ) .................................................. 870 20.6.6.1. Vrste bonding a i načini njegovog rada ............................................................................. 871 20.6.6.2. Konfiguracija bonding a u Linuxu ...................................................................................... 872 20.6.6.3. IEEE 802.3ad ( 802.1 AX -2008) odnosno LACP protokol .................................................... 876 Link Layer Discove ry Protocol (LLDP) ................................ ........................................................ 880 Pregled mrežnih su čelja ............................................................................................................ 882 20.7. ARP protokol ............................................................................................................ 883 20.7.1.1. Izgled ARP paketa ............................................................................................................. 884 20.7.1.2. Rad s ARP prot okolom ...................................................................................................... 885 20.7.1.3. Scenarij za prisilno osv ježavanje ARP tablice ( Gratuitous ARP ) detaljnije ....................... 888 20.7.1.4. Proxy ARP i druge opcije .................................................................................................. 890 20.7.1.5. ARP Flux (nepredvi divi ARP odgovori) ................................ .............................................. 893 21. IP adrese i usmjeravanje ........................................................................................ 896 21.1. Klase IP adresa ......................................................................................................... 896 21.2. Mreže ................................................................ ....................................................... 897 21.3. Maska mreža ( Netmask ) ................................................................ ........................... 898 Podmreže ( Subnets ) .................................................................................................................. 902 Nadmreže ( Supernet ting ) .......................................................................................................... 906 21.4. Usmjeravanje ( Routing ) ............................................................................................ 907 XIV Distance vector protokoli .......................................................................................................... 909 Link-state protokoli ................................................................................................................... 909 Upotreba protokola za umjer avanje pod Linuxom ................................................................... 910 22. Metode komunikacije ............................................................................................ 912 22.1. Unicast ..................................................................................................................... 912 22.2. Broadcast ................................................................................................................. 913 22.3. Multicast .................................................................................................................. 913 Oblik multicast poruk e (paketa) ............................................................................................... 915 Kako to izgleda u praksi ............................................................................................................ 916 Multicast u upotrebi ................................................................ ................................................. 919 22.4. Anycast komunikacija ............................................................................................... 923 23. Internet (IP) sloj (OSI 3) .......................................................................................... 925 23.1. Oblik IP poruke (paketa) ........................................................................................... 926 Osiguranje kvali tete ( QoS ) i klasifikacija prometa ( ToS i DSCP ) ................................................ 930 23.2. IP fragmentacija ....................................................................................................... 933 Optimizacije v ezane za fragmentaciju i MTU ................................ ............................................ 937 23.2.1.1. Path MTU Discove ry ......................................................................................................... 938 23.3. Kako radi mreža (OSI 2 + OS I 3) ................................................................................. 941 23.4. Usmjerivači ( routeri ) i OSI slojevi 3 i 4 ....................................................................... 942 Time to live ( TTL ) ....................................................................................................................... 943 Maximum Transmi ssion Unit ( MTU ) ......................................................................................... 944 23.4.2.1. MTU primjeri .................................................................................................................... 946 Veliki mrežni okvi ri ( Jumbo frames ) .......................................................................................... 948 Translacija adresa ( NAT ) ................................................................ ........................................... 951 23.4.4.1. Source NAT (SNAT) ........................................................................................................... 952 23.4.4.2. Destination NA T (DNAT) ................................................................................................... 955 Redundancija na OSI sloj u tri (OSI 3) i VRRP protokol .............................................................. 957 23.4.5.1. Keepalived i ba lansiranje opterećenja ( Load Balan cing ) ................................................. 960 23.4.5.2. Oblik VRRP poruke (paketa) ............................................................................................. 961 23.4.5.3. Balansiranje o pterećenja ( Load Balancing ) – ručni rad ................................................... 962 23.4.5.4. Algoritmi za balansi ranje opterećenja (Load Bal ancing) .................................................. 963 24. Transportni protokoli (OSI sloj 4) ................................ ........................................... 965 24.1. UDP .......................................................................................................................... 967 Oblik UDP poruke (pake ta) ....................................................................................................... 968 24.2. TCP ........................................................................................................................... 970 Maximum segment si ze ( MSS ) .................................................................................................. 973 Kako se uspostavlja TCP v eza .................................................................................................... 975 Sigurnosni aspekt uspostavl janja TCP veze ( SYN ) ..................................................................... 978 Trajanje TCP veze ...................................................................................................................... 981 Standardne potvr de ( ACK ) ........................................................................................................ 986 Selektivne potvr de ( SACK ) ........................................................................................................ 987 TCP mehanizmi ......................................................................................................................... 990 24.2.7.1. Vrijeme prolaska pa keta ( Round-Trip Time ) ..................................................................... 990 Kontrola protoka ( TCP Wind ow i Window scaling ) ................................................................... 991 24.2.8.1. Veza između la tencije, propusnosti i TCP Window size parame tra ................................ . 995 XV 24.2.8.2. Skaliranje TCP prozora ( Window Scaling ) ........................................................................ 996 Nadzor zagušenja ( Con gestion control ) ................................ .................................................... 999 24.2.9.1. Usporeni početak i izbj egavanje zagušenja ................................ .................................... 1008 24.2.9.2. Brzo slanje (fast retran smit) i brzi oporavak ( fast recovery) .......................................... 1010 24.2.9.3. Explicit Congestion No tification ( ECN ) ................................ ........................................... 1011 TCP Push ( PSH ) i Urgent ( UR G ) ................................ ........................................................... 1011 24.2.10.1. Urgent ( URG ) .................................................................................................................. 1012 24.2.10.2. Push ( PSH ) ...................................................................................................................... 1012 Kako se zatvara TCP v eza .................................................................................................... 1013 TCP reset ............................................................................................................................. 1015 Mehanizam TCP retransm isije ............................................................................................ 1018 Primitak paketa izv an redoslijeda slanja ( Out- Of -Order ) .................................................... 1020 TCP keepalives ................................................................ .................................................... 1023 Stanja TCP veze i nje na vremenska ograni čenja (timeri) .................................................... 1026 24.2.16.1. Timeri i stanja veze ......................................................................................................... 1028 24.2.16.2. Maximum Seg ment Lifetime (MSL) ................................ ................................................ 1030 Uzroci odbacivanja TCP vez a .............................................................................................. 1031 25. Mreža u Linuxu .................................................................................................... 1033 25.1. Linux mrežni model ................................................................................................ 1033 Raspodjeljivanje mr ežnih paketa ( network queuing/s cheduler ) ............................................. 1035 Optimizacija TX međumem orije ( txqueue len ) mrežnog sučelja ....................................... 1039 Prstenasta međumem orija ( Ring buffer ) [ TX Ring i RX Ring ] .................................................. 1040 25.1.3.1. NAPI i Pooling ................................................................................................................. 1044 Mehanizmi za raspodjelu ( queuing ) mrežnih paketa .............................................................. 1046 25.1.4.1. Bufferbloat ..................................................................................................................... 1049 25.1.4.2. Oblikovanje m režnog prometa i naredba tc ................................................................ . 1050 25.2. Dodatne mogućnosti linuxa .................................................................................... 1054 Receive Side Scali ng ( RSS ) ....................................................................................................... 1054 Multiqueue funkcio nalnost ..................................................................................................... 1057 25.2.2.1. Multiqueue i vi rtualizacija .............................................................................................. 1063 Receive packet steering (RPS), Recei ve flow steering (RFS) i Tr ansmit Packet Steering (XP S) 1064 25.3. Statistike, analiza i praćenje mrežnih p aketa .......................................................... 1068 25.4. Koje još mrežne tehnologij e i protokoli postoje ? ................................................... 1074 25.5. Hardverski ubrzane mrežne funkc ionalnosti ........................................................... 1075 Large receive o ffload ( LRO ) i Generic re ceive offload ( GRO ) .................................................. 1075 LSO, TSO i GSO ........................................................................................................................ 1077 Checksum offload ................................................................................................................... 1078 Scatter-gather ......................................................................................................................... 1079 Pregled navedenih dos tupnih tehnika, tehnologija i pro tokola ............................................. 1080 Optimizacije m režnih sučelja propusnosti ve će od 10Gbps ................................................... 1082 25.6. Osnovna konfiguracija mreže i m režnog podsustava ............................................... 1090 Konfiguracijska datoteka /e tc/hosts ................................ ................................................ 1090 Konfiguracijska datoteka /e tc/resolv.conf ................................................................ . 1092 Konfiguracijska datoteka /e tc/sysconfig/netwo rk ................................................... 1093 Nazivi mrežnih kartica u Linuxu .............................................................................................. 1095 Konfiguracija mr ežnih kartica ................................................................................................ . 1096 25.6.5.1. Statička konfiguracija ..................................................................................................... 1097 25.6.5.1.1. Priv remena statička konfiguracija ............................................................................. 1097 25.6.5.1.2. Trajna (perma nentna) ručna konfiguracija mreže ..................................................... 1099 XVI 25.6.5.2. Dinamička konfiguracij a mreže korištenjem DHCP poslužitelja ..................................... 1104 25.6.5.2.1. Priv remena konfiguracija korištenjem DHCP poslužitelja ......................................... 1105 25.6.5.2.2. Trajna konfig uracija mreže kori štenjem DHCP poslužitelja ....................................... 1105 Rad s mrežnim serv isom ......................................................................................................... 1106 25.6.6.1. Konfiguracija mr eže upotrebom naredbe nmcl i i NetworkManager servisa .............. 1107 Konfiguracija pravi la usmjeravanja ( ruta ) ............................................................................... 1111 25.6.7.1. Privremena konfigura cija statičkih ruta s nar edbama route i ip route ........................... 1111 25.6.7.2. Trajna konfigu racija statičkih ruta .................................................................................. 1112 Ruting i optimizacija r uting parametara ................................................................................. 1113 25.6.8.1. Routing policy ( Poli cy based routing ) ............................................................................. 1116 Skripte i funkcijske dato teke sustava zadužene za konfi guraciju mreže ................................ 1120 25.7. Osnovni mrežni alati ............................................................................................... 1122 Naredba ping .......................................................................................................................... 1122 25.7.1.1. ICMP poruka ................................................................................................................... 1123 Naredbe tracer oute i tracepath .............................................................................................. 1127 Naredba nslookup ................................................................................................................... 1129 Naredba netstat ...................................................................................................................... 1130 Naredba nstat ......................................................................................................................... 1132 Naredba list open file s ( lsof ) ................................................................................................... 1133 Naredba socket statisti cs ( ss ) .................................................................................................. 1136 Naredba tcpdump ................................................................................................................... 1139 Naredba ip .............................................................................................................................. 1143 25.7.9.1. Rad s IP parametri ma mrežnih sučelja ........................................................................... 1143 25.7.9.2. Rad s parametri ma rada mrežnih sučelja ....................................................................... 1144 25.7.9.3. Rad s multicastom .......................................................................................................... 1145 25.7.9.4. Mrežni imenič ni prostori ................................................................................................ 1145 25.7.9.5. ARP unosi ....................................................................................................................... 1145 25.7.9.6. Tablice usmjeravanja ...................................................................................................... 1146 25.7.9.7. PBR (Policy bas ed routing) ............................................................................................. 1146 25.7.9.8. TUN i TAP sučelja ........................................................................................................... 1147 25.7.9.9. Sučelja za tune liranje ..................................................................................................... 1147 25.7.9.10. VRF (virtual ro uting and forwarding) ............................................................................. 1148 25.7.9.11. IPSec protokol ................................................................................................................ 1148 Naredba ethtool ................................................................................................................. 1149 25.8. Popis (i opis) osnovnih mrežnih protok ola i servisa ................................................. 1157 Datoteka /etc/s ervices ................................................................ .................................. 1157 TFTP i FTP protokoli ................................................................................................................ 1158 25.8.2.1. TFTP ................................................................................................................................ 1158 25.8.2.2. FTP .................................................................................................................................. 1158 DHCP protokol ........................................................................................................................ 1159 25.8.3.1. Oblik DHCP poruke ......................................................................................................... 1160 25.8.3.2. DHCP - kako to izgleda u praksi ...................................................................................... 1163 25.8.3.2.1. Poruka DHCP Discover ............................................................................................... 1163 25.8.3.2.2. Poruka DHCP Offer ..................................................................................................... 1164 25.8.3.2.3. Poruka DHCP r equest ................................................................................................ . 1166 25.8.3.2.4. Poruka DHCP ACK ...................................................................................................... 1167 25.8.3.2.5. Stanja DHCP kl ijenta .................................................................................................. 1168 25.8.3.3. Konfiguracija DHCP p oslužitelja ..................................................................................... 1169 Bootp protokol ........................................................................................................................ 1171 25.8.4.1. DHCP dio komunika cije .................................................................................................. 1172 25.8.4.2. Dio sa TFTP klijentom ..................................................................................................... 1173 25.8.4.3. Dio s BOOT MAN AGERom i TFTP klijentom - nastavak .................................................. 1173 XVII 25.8.4.4. Kickstart meto da automatizirane instala cije operativnog sustava ................................ 1175 DNS protokol ................................................................ ........................................................... 1180 25.8.5.1. DNS detaljnije ................................................................................................................. 1184 25.8.5.2. Autoritativni D NS poslužitelj .......................................................................................... 1185 25.8.5.3. Rekurzivni pre dmemorijski ( caching ) DNS ..................................................................... 1185 25.8.5.4. Vrste DNS upita ................................................................ .............................................. 1186 25.8.5.5. DNS zapisi ( DNS re cords ) ................................................................................................ 1188 25.8.5.5.1. Autoritativni i neautoritativni odgov ori ..................................................................... 1188 25.8.5.5.2. A zapis ........................................................................................................................ 1189 25.8.5.5.3. AAAA zapis ................................................................................................................. 1189 25.8.5.5.4. PTR zapis .................................................................................................................... 1190 25.8.5.5.5. CNAME zapis .............................................................................................................. 1190 25.8.5.5.6. DNAME zapis .............................................................................................................. 1190 25.8.5.5.7. MX zapis ................................................................ ..................................................... 1191 25.8.5.5.8. NS zapis ...................................................................................................................... 1191 25.8.5.5.9. SOA zapis ................................................................................................................... 1191 25.8.5.5.10. Drugi zapisi ............................................................................................................... 1192 25.8.5.6. Zone i zonske datoteke ................................................................ .................................. 1192 25.8.5.6.1. Zone update ............................................................................................................... 1193 25.8.5.6.2. Full Zone Up date (AXFR) ................................ ............................................................ 1193 25.8.5.6.3. Incremental Zo ne Update (IXFR) ................................................................................ 1194 25.8.5.6.4. Notify (NOTIFY ) .......................................................................................................... 1194 25.8.5.7. Izgled DNS pak eta na mreži ................................ ............................................................ 1195 Telnet i SSH protokoli ................................................................ .............................................. 1196 25.8.6.1. Telnet ............................................................................................................................. 1196 25.8.6.2. SSH ................................................................................................................................ . 1196 25.8.6.2.1. SSH komunik acija detaljnije (kri ptiranje/dekriptiranje) ............................................ 1197 NFS ................................................................................................ .......................................... 1200 25.8.7.1. Instalacija i konfigura cija ................................................................................................ 1201 25.8.7.2. UID/GID mapir anje i sigurnosne opcije u N FS-u ............................................................ 1204 Elektronička pošta (e -mai l) ..................................................................................................... 1205 25.8.8.1. Konfiguracija i rad s elektr oničkom poštom ................................................................... 1208 (R)syslog servis i usl uga ........................................................................................................... 1211 26. Mrežni servisi i usluge ......................................................................................... 1212 26.1. Network Manager .................................................................................................. 1212 26.2. Konfiguracija i rad sa: SSH, SFTP i SCP ..................................................................... 1215 26.2.1.1. Instalacija i pokretanje ................................................................................................... 1215 26.2.1.2. Spajanje na udaljeni SSH ser vis ...................................................................................... 1215 26.2.1.3. Konfiguracija SSH klijent a ................................ ............................................................... 1216 26.2.1.4. Napredna konfiguracija SSH servisa ............................................................................... 1217 26.2.1.5. SCP ................................................................................................................................ . 1217 26.2.1.6. SSH tuneliranj e ............................................................................................................... 1218 26.2.1.7. SSH debugging ................................................................................................................ 1221 26.3. TFTP ....................................................................................................................... 1222 Instalacija ................................................................ ................................................................ 1222 Konfiguracija ........................................................................................................................... 1223 Upotreba i primje ri ................................................................................................................. 1223 26.4. HTTP ....................................................................................................................... 1224 Instalacija ................................................................ ................................................................ 1224 Konfiguracija i pokreta nje ....................................................................................................... 1224 XVIII Izgled HTTP paketa na mre ži ................................................................................................... 1226 Secure Socket Layer, Transport Layer Security i kri ptografija ................................................ 1227 26.4.4.1. Konfiguracija HTT PS servisa (Apache) ............................................................................ 1240 26.4.4.2. Upotreba hard verski ubrzanih kripto funkcij a ............................................................... 1242 WebSocket .............................................................................................................................. 1248 Proxy poslužitelji ..................................................................................................................... 1249 26.5. Dohvaćanje web sadržaja (nared be wget i curl) ...................................................... 1253 26.6. NTP ........................................................................................................................ 1255 Struktura NTP paketa .............................................................................................................. 1257 Osnovna konfiguracija ............................................................................................................ 1259 Chrony servis ........................................................................................................................... 1262 26.7. Vatrozid ( Firewall ) .................................................................................................. 1264 Kako koristiti vatrozi d ............................................................................................................. 1264 Kako radi Linux vatrozid ipta bles ............................................................................................ 1265 26.7.2.1. Primjeri ........................................................................................................................... 1266 Pogled na mrežni model v atrozida u linuxu i nove tehnolo gije .............................................. 1269 26.7.3.1. Nova funkcionalnost: ips et ............................................................................................. 1273 26.7.3.2. Nftables .......................................................................................................................... 1274 26.7.3.3. Najnovija metoda dohvać anja i obrade mrežnih paketa ( XDP + eBPF ) .......................... 1279 26.7.3.3.1. Upotreba i ko nfiguracija eBPF filte ra (pravila) vatrozida ........................................... 1284 26.8. Napredne mrežne tehnologije ................................................................................ 1287 Network Namespaces ............................................................................................................. 1287 Druga mrežna sučelja ( MACVLAN,IPVLAN,VXLA N,MACVTAP/IPVTAP ) ................................... 1289 Intelligent Plat form Management Interface (IPMI) ................................................................ 1293 Visoko dostupni sustavi ( Hig h Availability ) ............................................................................. 1296 26.8.4.1. Servis conntrack i si nkronizacija stanja mrež nih veza .................................................... 1297 Open vSwitch serv is ................................................................................................................ 1302 Usporedba mrežnih te hnologija hipervizora za virtualizaciju ................................................. 1306 Virtual Private Networ k (VPN) ................................................................................................ 1308 Intrusion detection s ystem (IDS) i Intrusion prevention s ystem (IPS) .................................... 1311 27. Virtualizacija i linux kontejneri ............................................................................ 1314 27.1. Virtualizacija ........................................................................................................... 1315 Linux kao hipervizor ................................................................................................................ 1319 Rad s virtualiza cijom (KVM+QEMU) ........................................................................................ 1322 27.1.2.1. Konfiguracija mr eže ....................................................................................................... 1322 27.1.2.2. Praćenje i analiza rada T AP sučelja ................................................................................ 1325 27.1.2.3. Disk kontroleri ................................................................................................................ 1326 27.1.2.4. Disk image formati ......................................................................................................... 1329 Optimizacije ............................................................................................................................ 1332 27.1.3.1. CPU i RAM ...................................................................................................................... 1332 27.1.3.2. Chipset, BIOS i grafička kartica (VGA) ............................................................................ 1335 27.1.3.3. IOMMU .......................................................................................................................... 1335 27.1.3.4. Ugniježđena vi rtualizacija ( nested virtualiza tion ) .......................................................... 1335 27.1.3.5. QEMU Guest agent i ACPI .............................................................................................. 1336 27.1.3.6. Diskovni podsustav ........................................................................................................ 1340 27.1.3.7. Sistemski sat virtualnih ra čunala .................................................................................... 1340 27.1.3.8. Hot plugging disk, CPU, NIC, RAM .................................................................................. 1341 27.2. Linux kontejneri ..................................................................................................... 1342 Konfiguracija i upotre ba Linux kontejnera ................................ .............................................. 1344 XIX Podman Linux kontejneri ........................................................................................................ 1352 27.3. Chroot i chroot jail .................................................................................................. 1359 28. Sigurnosni aspekti Linuxa .................................................................................... 1362 28.1. Važnost redovite nadogradnje operativ nog sustava ................................................ 1362 28.2. SELinux sustav ................................................................ ........................................ 1363 Konfiguracija SELinux sustava ................................................................................................ . 1363 28.3. Sigurnosne preporuke ............................................................................................ 1371 29. Dodaci ................................................................................................................. 1380 29.1. ASCII tablica ........................................................................................................... 1380 29.2. Popis i kratki opis Linux naredbi ............................................................................. 1382 29.3. Popis kratica i pojmova ........................................................................................... 1390 29.4. Popis značajnijih datoteka Linuxa ........................................................................... 1406 29.5. Popis često korištenih ser visa u Linuxu ................................................................... 1410 29.6. Propusnosti sučelja ................................................................................................ . 1411 29.7. Usporedba platformi za virtualizaciju ..................................................................... 1412 30. Drugi dodaci ........................................................................................................ 1415 30.1. Formati zapisa (ekstenzije) datoteka ................................ ...................................... 1415 30.2. TCP i UDP portovi u čestoj primjeni ........................................................................ 1417 30.3. Usporedba konfiguracijskih datoteka ovisno o distribuciji Linuxa ili Unixa ............. 1419 30.4. Popis programa otvorenog prog ramskog kôda ........................................................ 1421 30.5. Popis često korištenih datotečnih sustava .............................................................. 1422 31. Izvori informacija ................................................................................................ . 1423 32. Sponzori .............................................................................................................. 1453 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, listopada 2025. godine. 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 upravljač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 ovlasti ( engl. permissions ). Sje timo se da smo nakon prijavljivanja na sustav ( logiranja ) , prijavljeni kao određeni korisnik koji pripada određenoj korisnič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 ). Ove ovlasti se mijenjaju s naredbom: chown (o njoj kasnije). 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 upotrebu operatora za redirekciju ( > il i >> ). 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 dat oteka, kopiranje datoteka u direktorij (primjerice s naredbom cp ), ili micanja (primjerice s naredbom mv ) odnosno brisanja datoteka unutar direktorija (primjerice s naredbo m 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 r w x 4 2 1 59 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 ). 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 Napredno Zapravo kod oktalnog dodjeljivanja ovlasti ispred prva tri broja uvijek stoji nula (0), koja označav a 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 samo 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 60 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 . 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 n aredbom 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 ). Naime 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 j e pokrenuo. Konkretno on može mijenjati samo jedan red ak u kojem je pohranjena lozinka za trenutnog korisnika, i to stupac u tom retku 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 61 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 total 1.2M 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 find,man ls,man 5 passwd. 62 4.4. Rad s direktorijima i datotekama detaljnije U ovoj cjelini upoznat ćemo se s naprednim detaljima oko dodatnih ovlasti (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 je 2, a ko sadrži samo jedan podd irektorij onda je vrije dnost 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 . 63 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 biti 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 opisno i ov ako: 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 64 Prije nego što promijenite vrijednost umask-a , provjerite da nova vrijednost ne predstavlja potencijalni sigurnosni rizik. Vrijednosti koje su manje restriktivne od 022 trebaju se koristiti s velikim oprezom. Na primjer, umask 000 znači da svatko ima dopuštenja za čitanje, pisanje i izvršavanje svih novostvorenih datoteka. Recimo da želimo postaviti restriktivnija dopuštenja za novostvor ene datoteke i direktorije kako drugi ne bi mogli prelaziti u direktorije i čitati datoteke. Dozvole koje želimo su 750 za direktorije i 640 za datoteke. Navedena ž eljena vrijednost umask predstavljena u numeričkom zapisu je tada 027 . Da biste trajno postavili novi sustav vrijednosti, otvorite datoteku /etc/profile u uređivaču teksta i na kraj dodajte: umask 027 Da bi promjene stupile na snagu, pokrenite sljedeću naredbu (ili se odjavite i prijavite na sustav): source /etc/profile Drugi način postavljanja maske za stvaranje datoteke je korištenje simboličke no tacije. Na primjer, umask u=rwx,g=rx,o= je isto što i umask 027 . Nadalje, u centralnoj datoteci /etc/login.defs moguće je definirati umask vrijednost, koja je standardno postavljena na: UMASK 022 Moguće je postavke stavljati i u PAM podsustav, dakle u datoteke unutar dir ektorija /etc/pam.d/ . Primjerice dodavanjem unosa poput: session optional pam_umask.so umask=0002 Međutim pazite na to da će, ukoliko postoje korisničke umask postavke (za interaktivno logiranje), pregaziti ove postavljene u PAM datoteci za pojedini servis (pr. /etc/pam.d/sshd za ssh servis). Vezano za PAM sustav pogledajte: 7.1.6.6 . Linux PAM (Pluggable Authentication Modules). Umask za servise U određenim slučajevima možemo imati programe (procese) i servise koji stvaraju datoteke, a ako želimo upravljat i ovlastima tih datoteka, najjednostavniji način je definicija umaska . Jedan od primjera je apache web ( httpd ) poslužitelj koji primjerice stvara log i druge datoteke, a nakon što su stvorene možda ih želimo pregledavati s našim korisničkim računom koji dijeli istu korisničku grupu (pr. grupu apache ). Naime, ponekad imamo procese i servise koji stvaraju datoteke, a želimo upravljati dopuštenjima tih datoteka ili s nekim skriptama i nakon što su datoteke stvorene želimo izmijeniti ili čitati ove datoteke s našim korisničkim računom koji dijeli istu korisničku grupu ( apache u konkretnom slučaju) . Kako to tada učiniti? Općenito, potrebno je staviti naredbu umask s definiranom željenom vrijednosti u s kriptu koja se koristi za pokretanje servisa ili u drugu datoteku uključenu u pokretanje servis a. Za konkretan slučaj je to umask vrijednost 002 . Za Red Hat do v.7. može se napraviti slj edeće: echo "umask 002" >> /etc/sysconfig/httpd Na taj način smo u inicijalizacijsku datoteku dod ali potrebn željenii umask . Međutim, kod novijih inačica Red Hat Linuxa ( 7+ ) za tu namjenu je zadužen systemd servis, pa je potrebno u datoteku: /usr/lib/systemd/system/httpd.service , dodati u sekciju [Service] naš umask , poput ovoga: [Service] UMask=0002  (Početna 0 je oznaka oktalnog zapisa). Zatim je potrebno pokrenuti proceduru za osvježavanje sadržaja servisa: systemctl daemon-reload Tek sada možemo pokrenuti (ili restartati servis): systemctl restart httpd Pogledajmo i vrlo skraćenu tablicu s umask postavkama odnosno pravima koja ona predstavljaju na datoteke i direktorije: Maska (umask) Efektivne ovlasti za datoteke Efektivne ovlasti za direktorije 000 666 rw-rw-rw- 777 rwxrwxrwx 002 664 rw-rw-r-- 775 rwxrwxr-x 007 660 rw-rw---- 770 rwxrwx--- 022 644 rw-r--r-- 755 rwxr-xr-x 027 640 rw-r----- 750 rwxr-x--- 077 600 rw------- 700 rwx------ 277 400 r-------- 500 r-x------  Puna tablica ima 777 mogućih vrijednosti! Potpunu tablicu umask vrijednost pogledajte na izvoru informacija [ 1498 ] ili na poveznici : https://github.com/opensourceosijek/website/blob/master/static/slike/Umask-tablica.txt . Izvori informacija: [ 109 ],[ 110 ],[ 1493 ],[ 1494 ],[ 1495 ],[ 1496 ],[ 1497 ],[ 1498 ],[K- 12 ], man umask,man chmod, man chown, man pam_umask. 71 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 inodeova je 32 bitni broj, što znači maksimalan broj da toteka 2 32 = 4 milijarde. • Z a XFS , BTFRS i ZFS broj inodeova je 64 bitni broj, što znači maksimalan broj dato teka 2 64 (izrač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š slobodno, 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 ) vidi mo 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 slobodno odnosno još dostupno 117 milijuna ( 117M ) što vidimo iz stupca IFree . • Za datotečni sustav montiran u ( /export/Share2 ) vidimo kako imamo al ocirano 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 sus tav 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. 72 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 lin kova 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 s e kreirati hard link na direktorij (mapu) kako bi se spriječila poja va rekurzivne petlje unutar da totečnog sustava. Naime tada bi bilo moguće kreirati hard link na roditelj ski (vršni) direktorij, pa bi se ulaskom u nje ga ponovno ušlo u tre nutni direktorij, što bi uzrokovalo da taj dire ktorij 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 je dnu poveznicu: ime datoteke na svoj inode broj stoga, ako datoteka nema dodatnih hard li nk poveznica, ovdje će mo 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. 73 Soft linkovi Soft Linkovi se zapravo referenciraju na već kreiranu datoteku ili direktorij s apsolutnom ili relativ nom putanjom. Dakle soft link datoteka zapravo pokazuje na inode broj od izvorne datoteke. To znači kako se soft link direktn o veže na sadržaj izvorne datoteke, pošto se njen sadržaj odnosno podaci nalaze u inode dijelu. Logička shema soft link datoteke je vidljiva na slici 12 . Slika 12. Pogled na soft 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 k oji tada više ne postoji pa je efektivno neupotrebljiv • Premještanje izvorne datoteke – ako se izvorna datoteka premjesti, soft link i dalje pokazuje na star u putanju, što može dovesti do prekinutih poveznica. • Izmjene u soft linku – promjena sadržaja preko soft linka utječe na originalnu datoteku. No, ako iz brišete soft link , originalna datoteka ostaje netaknuta. Razlika između soft i hard linkova • Soft link je pokazivač na drugu datoteku ili direkt orij, dok je hard link direktna referenca na inode broj (strukturu koja pohranjuje podatke o datoteci u datotečnom sus tavu). • Soft link može pokazivati na datoteku ili direktorij, čak i na ra zličitim datotečnim sustavima. • Hard link mora pokazivati na datoteku unutar istog datotečnog su stava i ne može se primijeniti na direktorije. Izvori informacija: [K-1],[K-12], man ls , man ln,man 7 symlink. 74 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 dat oteci ili mapi. N oviji datotečni sustavi ne moraju stalno mijenjati ovo vrijeme zbog opt imizacije 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 v idi u zadnjem stup cu 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 pristupanja/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 75 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. 76 Opisni ci datoteke ( 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 definirana file deskriptora , koji moraju imati svoje pripadajuće brojeve ( 0 , 1 i 2 ) . Potom se otvaraju i drugi po redu fi le 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 . 77 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, ali i svakog pojedinog korisnika. U svakodnevnom radu, posebno u radu servisa (zb og njihovih ograničenja) , ponekad nam je potrebno saznati koliko file deskriptora su oni zauzeli. Ne za boravimo da u Linuxu svaki uređaj predstavlja neka (posebna) datoteka . Tako da svaki program pristupa prilično velikom broju datoteka, poput: • Raznih biblioteka (engl. library ) i drugih datoteka potrebnih za rad sâmog programa. • Njegovih 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. Prvo što moramo saznati je koji proces ID ( PID broj ) ima servis ili program koji pratimo. To možemo napraviti na nekoliko načina. Recimo da se radi o procesu imena sshd (to je SSH poslužitelj ). Pogledajmo kako pronaći njegov PID broj. 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 slj edeć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 čitanja (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 datoteci (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 datoteci (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 /proc/ PID /fd/ direktorija. Pri čemu je PID zapravo PID broj našeg procesa (u ovom slučaju 29377 ). 78 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čno ima oznaku: unix . • network socket – korist e se za mrežnu komunikaciju između proc esa/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 , pogledajte 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 file 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. 79 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 vidimo 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 datot eka kojima net ko trenutno pristupa. Možemo i provj eriti tko trenutno koristi (čita ili zapisuje) 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 pogl avlja: 9.4.1 . Unix Pipes. 9.4.3 . Slijedeći koraci: Unix i network socketi . 25.7.6 . Naredba li st open files ( lsof ). Izvori informacija: [ 222 ],[ 673 ],[K-12], man lsof. 80 4.5.5.2. File deskriptori i veza s inode-om Osim što Linux kernel koristi inode strukturu za opis svake datoteke na disku, neovisno o njenom imenu , važno je razumjeti da procesi (pokrenuti programi ili servisi) na najnižoj razini pristupaju datotekama isključivo pomoću file deskriptora ( FD ). Svaki file deskriptor ima cjelobrojnu oznaku (0,1,2,3...), kojom proces (program) u korisničkom prostoru referencira datotečni objekt u kernelu. Taj objekt sadrži informacije o n ačinu otvaranja datoteke ( read/write, append, offset u datoteci itd.), a u konačnici je povezan sa stvarnim inode - om koji opisuje datoteku u datotečnom sustavu. Sve operacije čitanja ili zapisivanja datotek a rade se isključivo preko file deskriptora ( FD ), a ne preko imena datoteke! Kada nastaje veza FD ↔ inode? Veza file deskriptora ( FD ) s inode oznakom nastaje prilikom otvaranja datoteke . Odnosno kada bilo koji proces (program ili servis) želi otvoriti neku datoteku za čitanj e ili zapisivanje , kernel tada: • Pronalazi inode pomoću imena datoteke ( pathname → dentry → inode ). • Kreira novi struct file objekt. • Dodjeljuje mu file deskriptor (npr. broj 3). • Povezuje FD s inode-om koji predstavlja tu datoteku. Kada se veza FD ↔ inode prekida? Veza file deskriptora ( FD ) određenog procesa s inode oznakom se prekida: • Kada se kreira nova datoteka s istim imenom – ona dobi va novi inode broj → ali stari FD ne zna za to jer on pokazuje na stari inode broj. • K ad a se FD zatvori ( close(fd) ), ili kada proces završi s radom te kernel zatvori sve njegove FD-ove. Međutim, ako preimenujemo datoteku ( rename ), tada inode na datoteku ostaje isti, kao i poveznica na FD. Zbog čega se File deskriptor ne može ponovno povezati na drugi inode broj ? Kada proces otvori datoteku, kernel obavlja niz k oraka: prona lazi inode datoteke, kreira poseban file objekt, te vra ća procesu cjelobrojnu oznaku – file deskriptor ( FD ). Taj file deskriptor je zapravo samo indeks u tablici d eskriptora procesa, a on u kernelu pokazuje na uvijek isti file objekt , koji se na kraju referencira određeni inode broj. Važno je razumjeti da se veza FD → ( struct) file objekt → inode nikada ne mijenja sama od sebe. Naime, jednom kada proces dobije FD , taj file desk riptor ostat će vezan na isti inode sve dok ga proces ne zatvori il i dok se proces ne ugasi. Čak i ako se datoteka obriše ( unlink ) ili preimenuje ( rename ), FD i dalje ostaje valjan jer kernel čuva referencu na inode dokle god postoje otvoreni FD-ovi koji ga koriste. Zašto kernel ne „prebacuje“ FD na novi inode ako datoteka dobije novo ime? Razlog je u samom dizajnu UNIX sustava: • Sigurnost – ponovno otvaranje nove datoteke trebalo bi proći provjeru pristupnih prava. Ponovno automatsko povezivanje bi zaobišlo te provjere. • Predvidljivost – proces koji čita ili piše u datoteku mora uvijek i mati stabilan i pouzdan pristup istom objektu. Ako bi se FD samovoljno preusmjeravao na drugi inode , proces bi mogao neočekivano raditi nad krivim podacima . • Jednostavnost modela – jasna semantika open() i close() čin e programski model konzistentnim i p ouzdanim. Gdje se to vidi u /proc pseudo datotečnom sustavu? U procfs-u svaki proces ima direktorij /proc/<PID>/fd/ koji pokazuje na sve otvorene file deskriptore . Kreirajmo log datoteku /root/test-tail/demo.log , a potom ju otvorimo i pratimo promje ne na njoj uživo: tail -f / root/test-tail/demo.log U ovom slučaju, za ovu naredbu ( tail -f ), kreirat će se proces s PID-om 35520 koji je otvorio našu odredišnu datoteku za čitanje , a može imati sljedeći sadržaj direktorija: ls -al /proc/35520/fd lrwx------. 1 root root 64 Sep 8 13:40 0 -> /dev/pts/1 lrwx------. 1 root root 64 Sep 8 13:40 1 -> /dev/pts/1 lrwx------. 1 root root 64 Sep 8 13:40 2 -> /dev/pts/1 lr-x------. 1 root root 64 Sep 8 13:40 3 -> /root/test-tail/demo.log Isto tako, datoteka fdinfo za taj file deskriptor prikazuje detalje, uklju čujući i inode broj: cat /proc/35520/fdinfo/3 pos: 25 flags: 0104000 mnt_id: 64 ino: 1754  Ovdje je ino: 1754 broj inoda na koji FD pokazuje. 87 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 88 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 Izvor informacija: man fuser. 89 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 postota k 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 stroj nikada ne popuni disk u potpunosti, to znači da određena količina diska nikada 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. 90 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 . 91 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. 92 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. 93 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. 94 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. 95 5. Osnove rada u Linuxu U ovom poglavlju upoznat ćemo se s nekim od osnovnih naredbi za rad u Linuxu (i Unixu ) 5.1. Rad s nekim od osnovnih Linux/Unix naredbi U ovoj cjelini upoznati ćemo se s nekim od osnovnih naredbi u Linuxu, kako slijedi : • cd – za promjenu direktorija (mape) (engl. Change the working directory ). • ls – za ispis direktorija i datoteka (engl. List directory contents ). • pwd – za ispis trenutnog direktorija u kojem se nalazimo (engl. Print Working Directory ). • date – za ispis datuma i sata (engl. Date ). • cal – za ispis kalendara (engl. Calendar ). • man – za ispis uputa (engl. Manual ) za neku naredbu (primjerice : man date ) [ objašnjeno u zasebnom poglavlju ]. Pogledajmo i primjere njihove upotrebe , kroz ko je ćemo ih naučiti koristiti . Trenutno imamo slijedeću struktur u direktorija i poddirektorija koja nas zanima: /home/ucenik/ dakle imamo vršni direktorij /home i unutar njega direktorij ucenik . 1. Uđimo u direktorij (mapu) /home , a potom u poddirektorij /home/ucenik s naredb om cd na sljedeći način : cd /home cd ucenik 1.1 Vratimo se iz direktorija /home/ucenik/ u /home/ . Dakle jedan direktorij iznad odnosno jedan direktorij unazad. Pri tome nas upravo naredba cd .. vraća jedan direktorij unazad ( .. preko inode broja označava direktorij iznad/unazad) . cd .. 2. Pogledajmo gdje se trenutno nalazimo u stablu direktorija (mapa), s naredbom pwd pwd /home Vidimo da se nalazimo u direktoriju (mapi): /home . 3. Izlistajmo sadržaj direk torija (mape) s naredb om ls te sa njenim prekidačem -al na sljedeći način: ls -al total 12 drwxr-xr-x. 3 root root 4096 Jul 22 21:30 . dr-xr-xr-x. 21 root root 4096 Jul 24 16:50 .. drwx------ 6 ucenik ucenik 4096 Jul 24 18:49 ucenik 4. Provjerimo trenutni datum i vrijeme (naredba date ) koji je postavljen na sustavu i koristi se na računalu na kojem radimo: date Thu Jul 24 19:03:49 CEST 2014 5. Ispišimo kalendar za tekući mjesec (naredba cal ) na sljedeći način: cal July 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ''24'' 25 26 27 28 29 30 31 6. Ispišimo upute (manual [ man ]) za naredbu cal koju smo malo prije pozvali odnosno pokrenuli: man cal CAL(1) BSD General Commands Manual CAL(1) NAME cal - displays a calendar SYNOPSIS cal [-smjy13] [[[day] month] year] DESCRIPTION Cal displays a simple calendar. If arguments are not specified, the current month is displayed. Izvori informacija: [K-12], man cd,man ls,man pwd,man date,man cal,man man. 96 5.2. Naredbe za rad s direktorijima i datotekama U radu s naredbama koje slijede malo ćemo se dublje upoznati s v eć naučenim naredbama te ćemo naučiti i neke nove . Naredbe: cd , ls , pwd , mkdir , cp, mv i rmdir U ovom poglavlju upoznati ćemo se s naredbama za rad s mapama (direktorijima) i datotekama: • cd – za promjenu trenutnog radnog direktorija odnosno mape (engl. Change directory ). • cp – za kopiranje datoteke ili direktorija odnosno mape (engl. Copy ) [ za primjere pogledajte poglavlj e 5.5. ]. • ls – za izlistanje sadržaj a trenutnog (radnog) direktorija odnosno mape (engl. List directory contents ). • pwd – za prikaz direktorija (mape) u kojoj se trenutno nalazimo (engl. Print working directory ). • mkdir IME – za kreiranje direktorija (mape) imena IME (engl. Make directory ). • mv IME1 IME2 – za prebacivanje direktorija (mape) ili datoteku IME1 u IME2 (engl. Move ). • rmdir IME – za brisanje direktorija (mape) imena IME (engl. Remove directory ), uz napomene: o N e može se brisati direktorij (mapa) u kojem se nalazimo. o N e može se brisati direktorij (mapa) koji je pun. ▪ Za rekurzivno brisanje punih direktorija (mapa) koristiti rm -rf IME . Navedene naredbe dolaze u softverskom ( RPM ) paketu imena: coreutils . Za dublje upoznavanje s gore navedenim naredbama, proći ćemo kroz primjere . Kreirajmo direktorij (mapu) sa poddirektorijem (podmapom) u njemu, sve u jednom koraku ( /root/test/test1 ) mkdir -p /root/test/test1 Prekidač -p je naredbi mkdir naznačio da je osim glavnog direktorija ( /root/test ) potrebno kreirati i poddirektorij imena test1 unutar njega. Kreiraj mo datoteku imena proba.txt unutar direktorija /root/test/test1/ upotrebom naredbe touch : touch /root/test/test1/proba.txt Probajmo sada ući u direktorij /root/test cd /root/test Moguće je i relativno kretanje po direktorijima. To znači da ćemo iz trenutnog direktorija /root/test/ uć i u direktorij /root/test/test1 , ali ne daju ći apsolutnu putanju do tog dire ktorija ( /root/test/test1 ) već relativnu . Relativna putanja znači putanja u odnosu na našu trenutnu lokaciju (jer se trenutno nalazimo u direktoriju ( /root/test/ ): cd test1 Provjerimo gdje se sada nalazimo u stablu direktorija, pomoću naredbe pwd pwd /root/test/test1 Vratimo se jedan direktorij unazad. Za ovo se koristi naredba cd . Pri tome .. označavaju direktorij iznad trenutnog . cd .. Pogledajmo gdje se sada nalazimo , ponovno pomoću naredbe pwd pwd /root/test Izlistajmo sadržaj trenutnog direktorija s naredbom ls i njenim prekidačem -al koji nam daje detaljan ispis. • -a – daje nam sve detalje i skrivene datoteke (ili direktorije). • -l – daje nam listu dodatnih informacija: vrijeme, veličina te ovlasti datoteka i direktorija. ls -al drwxr-xr-x 3 root root 4096 Jun 1 13:34 . dr-xr-x---. 10 root root 4096 Jun 1 13:27 .. -rw-r--r-- 1 root root 16 Jun 1 13:29 lista.txt -rw-r--r-- 1 root root 14 Jun 1 13:30 popis-polaznika.txt drwxr-xr-x 2 root root 4096 Jun 1 13:34 test1 Filtrirat ćemo samo zadnji desni stupac s imenima datoteka iz ispisa od gore : Ime datoteke ili direktorija Opis . . o značava trenutni direktorij (mapu). .. .. o značava jedan direktorij ispred /iznad (prije ovoga u kojem se nalazimo) lista.txt Ovo je datoteka imena: lista.txt popis-polaznika.txt Ovo je datoteka imena: popis-polaznika.txt test1 Ovo je direktorij (mapa) imena: test1 103 5.5. Rad s datotekama U ovoj cj elini proći ćemo primjere rada s datotekama odnosno upoznati se s naredbama pomoću kojih možemo kopirati, brisati ili premještati datoteke iz direktorija u direktor ij i slično. Pogledajmo koje su to naredbe . Naredba mv IM E1 IME2 (engl. Move (makni/prebaci) ) – služi za prebacivanje datoteke iz direktorija u direktorij ili za pr eimenovanje datoteke ili direktorija (mape ): • mv ime-datoteke ime-dir – koristi se za prebacivanje datoteke u željeni direktorij (mapu) (engl. Move ). • mv staro-ime novo-ime – koristi se za preimenovanje imena datoteke u novo ime datoteke. Naredba rm – koristi se za brisanje datoteka ili direktorija, prema principu (engl. Remove (makni/obriši) ): • rm ime-datoteke – koristi se za brisanje datoteka (ili direktorija). Naredba cp – koristi se za kopiranje datoteka ili direktorija (engl. Cop y (kopiraj) ), prema principu cp izvor odredište ili: • cp izvor1 izvor2 odredište – pri ovoj operaciji kopiramo više datoteka istovremeno te ih kopiramo u odredišni direktorij . • cp -r izvor odredište – pri ovoj operaciji, rekurzivno kopir a mo sve s izvor a u odredišni direktorij ( odredište ) . Kod kopiranja možemo koristiti i prekidač -p kod potrebe za kopi ranjem izvornih ovlasti i vremenskih oznaka . P rekidač -r koristimo, ako trebamo rekurzivno kopiranje sadržaja (poddirektorija/datoteka). Navedene naredbe dolaze u softverskom ( RPM ) paketu imena: coreutils . Slijede primjeri . Izlistajmo prvo direktorije i datoteke u trenutnom direktoriju u kojem se nalazimo : ls -al drwxrwxr-x 3 ucenik ucenik 4096 Jul 21 21:57 . drwx------ 6 ucenik ucenik 4096 Jul 21 21:45 .. -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 21:34 prazno1.txt -rw-rw-r-- 1 ucenik ucenik 0 Jul 21 21:33 prazno2.txt -rw-rw-r-- 1 ucenik ucenik 0 Jul 21 21:33 prazno3.txt -rw-rw-r-- 1 ucenik ucenik 0 Jul 21 21:34 prazno4.txt -rw-rw-r-- 1 ucenik ucenik 0 Jul 21 21:27 prazno.txt drwxrwxr-x 3 ucenik ucenik 4096 Jul 21 21:57 test 1. Prebacimo datoteku prazno1.txt u direktorij imena test pomoću naredbe mv : mv prazno1.txt test 2. Pogledajmo sada sadržaj direktorija test te preimenujmo datoteku prazno1.txt u puno1.txt ls -al test drwxrwxr-x 3 ucenik ucenik 4096 Jul 21 22:00 . drwxrwxr-x 3 ucenik ucenik 4096 Jul 21 22:00 .. -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 21:34 prazno1.txt drwxrwxr-x 2 ucenik ucenik 4096 Jul 21 21:57 test1 A zatim preabacimo (u ovom slučaju preimenujmo) datoteku prazno1.txt u puno1.txt pomoću naredbe mv : cd test mv prazno1.txt puno1.txt Sada p ogledajmo sadržaj trenutnog direktorija (mape) : ls -al -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 21:34 puno1.txt drwxrwxr-x 2 ucenik ucenik 4096 Jul 21 21:57 test1 3. Kopirajmo datoteku puno1.txt u novu datoteku imena prazno1.txt , pomoću naredbe cp na sljedeći način: cp puno1.txt prazno1.txt Kod kopiranja s naredbom cp , ako moramo zadržati izvorne ovlasti i vremenske oznake, moramo koristiti P rekidač -p . 104 Ponovno p ogledajmo sadržaj direktorija (mape) u kojem s trenutno nalazimo (skratili smo ispis sadržaja direktorija ) : ls -al -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 22:08 prazno1.txt -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 21:34 puno1.txt drwxrwxr-x 2 ucenik ucenik 4096 Jul 21 21:57 test1 4. Sada obrišimo datoteku puno1.txt , pomoću naredbe rm na sljedeći način: rm puno1.txt Pogledajmo ponovno sadržaj direktorija (mape) u kojem s trenutno nalazimo (skratili smo ispis sadržaja direktorija ) : ls -al -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 22:08 prazno1.txt drwxrwxr-x 2 ucenik ucenik 4096 Jul 21 21:57 test1 Važno je znati da naredba rm uklanja (briše) datoteke bez traženja potvrde te ne postoji način z a poništavanje brisanja jer se uklonjene datoteke ne premještaju u smeće. Međutim naredba rm ima opciju -i (interaktivnu) koja traži potvrdu p rije uklanjanja datoteka. Ipak, u slučaju kada datoteka nema postavljenu ovlast z apisivanja (tj. ovlast w - write ) što znači da je zaštićena od zapisivanja (engl. write protected ), a pokušamo ju obrisati, ona neće automatski biti obrisana. U slučaju potrebe za uklanjanjem (brisanjem) ovakvih datoteka, možemo koristiti prekidač -f (engl. force ), s kojim će i ovakve (zaštićene) datoteke automatski biti obrisane. Pogledajte neke korisne prekidače naredbe rm : • -i – traži potvrdu za brisanje svake pojedine datoteke. • -I – traži potvrdu za brisanje više od tri datoteke ili rekurzivno brisanje . • -r – brisanje direktorija i njihovog sadržaja (datoteka) rekurzivn o. • -f – nasilno brisanje i datoteka koje su zaštićene od zapisivanja (one bez w ovlasti). • -v – kod svakog brisanja ispisuje detalje o brisanj u. • -- – ako brišemo datoteke čije ime počinje sa znakom minus ( - ) potrebno je prvo navesti ovaj prekidač ( minus minus ). • --no-preserve-root – ako želimo (nasilno) brisati vršni root direktorij ( / ) cijelog sustava, onda moramo koris titi ovaj prekidač. 5. Nastavljamo s kopiranjem datoteka ili direktorija (mapa) upotrebom naredbe cp . Prvo kreirajmo direktorij /backup : mkdir /backup Sada kopirajmo datoteku /etc/passwd u ovaj direktorij: cp /etc/passwd /backup Kopirajmo više datoteka ( /etc/passwd , /etc/group i /etc/shadow ) u isti odredišni direktorij (mapu): cp /etc/passwd /etc/group /etc/shadow /backup/ Moguće je kopirati i rekurzivno [ -r ] odnosno direktorije i poddirektorije te datoteke unutar njih. Stoga kopirajmo s ve datoteke i direktorije te sve poddirektorije unutar vršnog direktorija /home/hrvoje/ u odredišni direktorij /backup . cp -r /home/hrvoje/ /backup/ Pogledajmo i druge korisne prekidače naredbe cp : • -f – forsiraj kopiranje, bez pitanja o prepisivanju odredišne da toteke. • -l – ne kopiraj datoteku na odredište, već na odredištu kreiraj tvr du poveznicu (engl. hard link ) na nju. • -p – tijekom kopiranja, sačuvaj sve ovlasti izvorišne datoteke na odredištu. • -P – (veliko slovo P) tijekom kopiranja, nemoj pra titi simboličke veze s izvorišta datoteke na odredištu. Standardno ponašanje je da se prilikom kopiranja prate simboličke poveznice (engl. symbolic link). • -s – ne kopiraj datoteku na odredište, već na odredištu kreiraj si mboličku vezu (engl. symbolic link ) na nju. • --sparse=always – tijekom kopiranja, ako se kopiraju sparse datoteke , kao takve ih i kopiraj na odredište. • -u – ne kopiraj datoteku, ako izvorišna datoteka nije novija od o dredišne. Pogledajte i korisne prekidače naredbe mv : • -i - traži potvrdu za prebacivanje svake pojedine datoteke. • -f - nasilno prebacivanje i datot eka koje su zaštićene od zapisivanja (one bez w ovlasti). • -n - kod prebacivanja datoteke u drugi direktorij, ako na odredištu već postoji ista datoteka, ona se tada ne prebacuje. • -u - ( update ) premjestiti datoteku, samo kada je izvorna datoteka novija od odredišne datoteke ili kada odredišna datoteka nedostaje. • -b - ( backup ) ako odredišna datoteka postoji, kreiraj backup datoteku u odredišno m direktoriju. Izvori informacija: [K-12] , man mv,man cp,man rm,man ls. 105 5.6. Uređivač t eksta vi Prije nego krenemo dalje, morat ćemo se upoznati s osnovnim uređivačem odnosno editorom teksta. Program vi je uređivač teksta i on je inicijalno razvijan za prve inačice UNIXa, negdje tijekom 1976. godine, a od tada je dostupan na svim inačic ama Unixa i Linuxa koje postoje i koriste se do danas. On je je dini uređivač teksta koji ćemo sigurno nać i na bilo kojem UNIX ili Linux baziranom operativnom sustavu pa je v ažno pozna vati barem neke njegove osnove. Koliko god da je net ko nav ikao na neki drugi uređivač teksta, u praksi nikada ne mož emo biti sigurni koji od njih ćemo zateći na nekom UNIX ili Linux sustavu, osim vi uređivača teksta koji se nalazi na svima njima. Važno je razumjeti da vi uređivač teksta i ma dva osnovna načina rada: • Takozvani insert način rada za upisivanje sâmog teksta. • Naredbeni način rada za izvršavanje naredbi koje želimo primijeniti nad tekstom. Ne zaboravite da se kod upisa naredbi, kao i cijelog Linuxa razlikuju velika i mala slova!. Pošto je ovaj program razvijen za rad u naredbenom ret ku odnosno ljusci, u njemu ne postoji grafičko suče lje iz kojeg možemo mijenjati opcije ili način rada. T o znači kako on radi u terminalu , a naziva ga se i uređivačem teksta naredbenog retka. Međutim on nij e niti program za obra du i procesiranje teksta poput : MS Worda , Libre Offfice Write ra i slično, već je sličniji programima poput: MS Notepad ili Notepad++ . Pokretanjem programa vi , prvo ulazimo u naredbeni način rada, što znači kako u tom trenutku još ne možemo unositi tekst odnosno još uvijek ništa ne možemo pisati , osim unositi njegove naredbe. Prvo upoznajmo njegove osnovne naredbe, podijeljene u sljedeće logičke cjeline ( koje se pozivaju isključivo iz naredbenog načina rada ) : Naredbe za ubacivanje (engl. insert ) i nadodavanje teksta (engl. append ) te prikaz teksta: • i – ubaci tekst (ispred) (engl. Insert ). • a – ubaci tekst iza odnosno na kraj retka (engl. Append ). • o – (malo slovo o ) - otvori novi red ak ispod trenutnog u kojem se nalazimo. • O – (veliko slovo O ) - otvori novi red ak iznad onoga u kojem se tr enutno nalazimo. • I – ubaci tekst na početak re tka (u kojem se trenutno nalazimo). • A – ubaci tekst na kraj retka (u kojem se trenutno nalazimo). • :set number - naznačava programu da prikazuje brojeve reda ka (linija), ili da ih ne prikazuje ( set nonumber ). • tipka ESC - vraća nas u naredbeni način rada . Ako ne rade kursorske tipke , možemo koristiti i njihovu zamjenu, a to su slova koja ih predstavljaju : • h – pomjeranje lijevo. • l – pomjeranje desno. • j – pomjeranje dolje. • k – pomjeranje gore. • tipka ESC – vraća nas u naredbeni način rada . Naredbe za brisanje slova/znakova upisanog teksta : • x – za brisanje: znak po znak (jedno stiskanje slova/tipke x briše jedno slovo) . • dd – za brisanje cijelog retka teksta. Poništavanje uređivanja ( engl. Undo ): • u – (malo slovo u ) - poništi prvu promjenu (vraća se na prvu promjenu prije) u trenutnom redu (liniji). • U – (veliko slovo U ) - poništava sve promjene ko je smo radili, unutar trenutnog re tka (linije). Ponavljanje naredbe: • . – (točka) - ponavlja zadnju naredbu. Kopiranje (engl. pojam Yank ): • yw – kopiraj trenutnu riječ . • 2yw – kopiraj dvije (2) riječi . • yy ili Y – kopiraj trenutni redak teksta (cijeli red ak teksta). • 2yy – kopiraj dva (2) re tk a teksta. 106 Lijepljenje (zalijepi) ( Engl: Paste ) • p – zalijepi prethodno kopirani tekst (engl. Paste ). Traženje teksta, pojma ili ključne riječi unutar tek sta odnosno cijelog dokumenta: • / pojam – traži riječ: pojam . • n – skoči na sljedeći pronađeni pojam. • N – skoči na prethodni pro nađeni pojam . Pronađi i zamjeni : • %s/prvo/drugo/g – z amjeni riječ /pojam unutar cijelog teksta /dokumenta: prvo sa pojmom drugo Kretanje po radnoj datoteci: • g – (malo slovo G) - skoči na po četak datoteke . • 50G – skoči na 50 -ti red u datoteci. • G – (veliko slovo G ) - skoči na kraj datoteke . Snimanje uređenog teksta (moramo doći do naredbenog način rada da nam se pojavi znak : u donjem lijevom kutu, sa ESC : ) • :w – snimi radni dokument [ dokument na kojem radimo ] (engl. Write ). • :wq – snimi radni dokument i izađi iz programa vi (engl. Write + Quit ). • :wq! – snimi i izađi iz programa vi , čak i ako je otvorena datoteka zaključana za zapisivanje (ako je „ read-only “ ). Osnovni rad u programu vi : Iz Linux ljuske o tvorimo novu tekstualnu datoteku, koja će se zvati: dokument.txt vi dokument.txt Ovim potezom smo pokrenuli program vi i s njime stvorili (ako je nije bilo) i otvorili datoteku: dokument.txt Nalazimo se na početku naše novo stvorene datoteke ; u njenom prvom redu, na prvoj poziciji vidljivoj kao ~ ~ ~ ~ ~ "dokument.txt" [New File] Međutim nalazimo se u naredbenoj načinu rada te sada moramo odabrati što želimo raditi. Pošto želimo početi upisivati tekst, moramo stisnuti slovo to jest tipku i , jer želimo unositi tekst [ i =insert=ubaci tekst (počni s u pisivanjem teksta )]. Nakon što smo stisnuli tipku i , bit će vidljivo sljedeće : . ~ ~ ~ "dokument.txt" [New File] Potom u prvom redu vidimo kursor ( . ) i možemo početi upisivati tekst, zalijepiti ( paste ) ga iz n ekog drugog dokumenta i slično. Mi ćemo početi pisati, pa upišimo primjerice : ovo je proba ovo je proba ~ ~ ~ "dokument.txt" [New File] Za sada ćemo samo sve snimiti i izaći iz programa vi . Kako bismo to napravili, stisnimo tipku ESC , a potom stisnimo ti pke: SHIFT i Q te ENTER , a potom će nam se pokazati slijedeći ekran . Ako ne vidimo : stisnimo tipku ESC pa potom znak : ovo je proba ~ ~ ~ Entering Ex mode. Type "visual" to go to Normal mode. : Vidimo kako smo ušli u način rada u kojem možemo zad ati željene naredbe programu vi , u donjem lijevom kutu. P otom ćemo upisati: wq te stisnuti tipku ENTER, poput: :wq Čim smo stisnuli tipku ENTER , vi je snimio tekst u našu datoteku dokument.txt i izašao u naredbeni redak ( shell ). Ponovno učitajmo našu datoteku: vi dokument.txt 107 I na početku se nalazimo u prvom redu, na prvom slovu našeg teksta ; u ovom slučaju je to slovo o : ovo je proba ~ ~ ~ "dokument.txt" 1L, 13C Sada, kad se još nalazimo u naredbenom načinu rada, možemo koristiti bilo koju naredbu, od onih koje smo popisali. Mi ćemo sada skočiti na kraj re tka , tako što ćemo stisnuti veliko slovo A . Sada se dogodilo to da smo skočili na kraj re tka, na poziciju . ovo je proba . ~ ~ ~ --INSERT -- I na kraju dokumenta vidimo kako smo prešli u -- INSERT-- način rada, te sada možemo upisivati željeni te kst. Nakon što smo upisali što smo že ljeli, ponovno prvo stisnimo tipku ESC , a potom st isnimo ti pke: SHIFT i Q te ENTER , a potom snimimo dokument, upisivanjem wq i stiskanjem tipke ENTER. Toliko o osnovama programa vi . Standardni uređivač teksta u Linuxu se definira u sistemskoj varijabli VISUAL. Sistemsku varijablu VISUAL možemo postaviti na vi uređivač teksta na sljedeći n ačin: export VISUAL=/usr/bin/vi Pogledajte i poglavlje : 6.2.2 . Sistemske ( Environment ) varijable i postavke terminala . Pogledajte (za PDF dokument) i kratku animaciju rada u programu vi na ovoj poveznici . Izvor informacija: [K-12], man vi. 5.7. Rad sa sadržajem datoteka U ovom poglavlju upoznat ćemo se s radom sa sadržajem datoteka. I to u radu sa sadržajem datoteka te kstualnog formata . Pri ovim radnjama najčešće koristimo neko liko osnovnih programa odnosno naredbi: • grep – pronalazi traženi pojam odnosno ključnu riječ unutar željene datoteke. • cut – pronalazi tražene dijelove teksta unutar datoteke [pr. p olje podataka, stupac ili sl.] (engl. Cut (odreži/izreži) ). • awk – programski jezik i naredba za pronalaž enje, obradu i rad s uzorcima teksta. • sed – koristi se za razne transformacije teksta (engl. Stream Line Editor ). Osim navedenih, postoji i veći broj pomoćnih programa odnosno naredbi , od kojih ćemo spomenuti: • wc – koristi se za prebrojavanje riječi u datoteci (engl. Word Count (prebroji riječi) ). • uniq – za izbacivanje riječi odnosno redova koj i su identični tj. ponavljaju se (engl. Uniq (jedinstven) ). • sort – za sortiranje riječi po abecedi, broju ili sl . (engl. Sort (sortiraj) ) odnosno naredba tsort za topološko sortiranje S navedenim naredbama upoznat ćemo se u cjelin ama koje slijede! Izvori informacija: [K-12], man grep,man cut,man awk,man sed,man wc,man uniq,man sort. 108 Naredba grep Naredba grep je nastala u vrijeme nastanka prvih UNIX-a (1973.g. ). Koristi se za traženje t eksta odnosno pojma ili riječi , unutar tekstualnih podataka ili datoteka. Pretraživanje grep odrađuje pregledavajući red ak po red ak u datoteci unutar koje se radi pretraživanje. Standardno grep prikazuje sve retke (linije) u kojima je pronađen traženi tekst odnosno traženi pojam ili riječ. Postoji nekoliko važnijih varijanti naredbe grep od kojih je svaka razvijena za svoju specifičnu namjenu: • grep – ovo je standardna naredba odnosno program. • egrep – ovo je nadogradnja na osnovn u naredbu , koji dodaje nove meta karaktere za regularne izraze: + , ? , | , ( , ) a njegova funkcionalnost se može pozvati i sa grep -E. • fgrep – je varijanta programa optimizirana za ekstremno brzo pretraživanje, ali ne podržava regularne izraze. Može se pozvati i sa grep -F. Česti prekidači naredbe grep su: • -c – i spiši samo broj pronađenih pojmova (broj ponavlj anja pojma) . • -i – i gnoriraj veliko ili malo slovo (pretraži i j ednu i drugu varijantu) . • -n – i spiši i broj reda (linije teksta) u kojem je pronađen traženi pojam . • -r – r ekurzivno pretraživanje svih direktorija i poddirektorija ispod trenutnog, te naravno datoteka unutar njih. • -l – s amo ispiši datoteku u kojoj je pronađen traženi pojam . • -m – n akon koliko pronađenih istih pojmov a se prekida pretraživanje . Pr imjerice u potrebom prekidača -m1 će se ve ć nakon prvog pronađenog pojma prestati s dalj im pretraživanje m. • -o – i spiši samo traženi pojam koji je pronađen . • -v – ispiši sve one re tke (linije) koje ne sadrže pojam. Ovo je tzv. inverzna pretraga. Dodatni operatori za ispis su: • -A n – uz pronađeni pojam ispiš i još n redaka nakon onoga koji je pronađen. • -B n – uz pronađeni pojam ispiš i još n redaka prije onoga koji je pronađen. Primjeri : Iz tabličnog kalkulatora ( Open Off ice Calc i li Microsoft Excell ) smo izvezli (eksportirali) tablicu s ocjenama studenata za predmet e: Uvod u Linux ( uvod -u- linux.csv ) i Linux Napredno ( linux- napredno.csv ) i to u CSV formatu. Pri tome postoje tri stupca : Ime , Prezime i Ocjena , odvojena sa znakom ; . Dakle znak ; predstavlja granicu stupca. Tablice trenutno izgledaju ovako (ako ih gledamo s naredbom cat ) na sljedeći način : cat uvod-u-linux.csv Ime;Prezime;Ocjena Ana;Anic;4 Marina;Horvat;5 Luka;Lukic;2 Pero;Peric;4 Kristijan;Kristic;5 Maja;Anic;2 Dok druga tablica izgleda ovako: cat linux-napredno.csv Ime;Prezime;Ocjena Ana;Anic;2 Marina;Horvat;4 Luka;Lukic;2 Pero;Peric;4 Kristijan;Kristic;3 Maja;Anic;2 1. P omoću naredbe grep unutar datoteke uvod-u-linux.csv pronađimo cijeli unos (red) od studenta imena Ana grep Ana uvod-u-linux.csv Ana;Anic;4 1.1 . Ispišimo i broj reda u kojem je pronađen student imena Ana na sljedeći način ( -n = ispisuje i broj reda): grep -n Ana uvod-u-linux.csv 2:Ana;Anic;4 2. Sada nas zanima i kako izgleda unos u ob je tablice (datoteke), za istu osobu ( Ana ). Ovdje ćemo koristiti regularn i i zraz * koji označava bilo koji znak, pošto obje datoteke u imenu imaju riječ linux i ekstenziju odnosno nastavak u nazivu datoteke koja završava sa .csv . To ćemo napraviti na sljedeći način: grep Ana *linux*.csv linux- napredno.csv:Ana;Anic;2 uvod-u- linux.csv:Ana;Anic;4 [Document text truncated for crawler view.]