5.1.3. Struktura datotečnog sustava |
Datoteke, imenici i uređaji Linuxa OS smješteni su u jedan JEDINSTVENI datotečni sustav (već je navedeno, sve je datoteka), što znači da je sve ukomponirano u jednu veliku hijerarhijsku strukturu u kojoj se uređaji kao takvi ne vide posebno, kao što je slučaj kod Windows OS. Na primjer Linux ima datoteku xorg.conf koja se u odnosu na vrh-korijen (root) stabla datotečne strukture označene s [ / ], nalazi u imeniku [etc] pridruženom vrhu strukture, u kojem je podimenik [X11], ili pojednostavljeno datoteka [/etc/X11/xorg.conf]. Nigdje se ne navodi nekakav disk kao što bi kod Windows XP operativnog sustava bilo na primjer [C:\WINDOWS\system32\oeminfo.ini] gdje se vidi pripadnost particiji [C:]. Dakle, za učinkovitu 'šetnju' kroz krošnju Linux stabla treba ga poznavati. Strukturu Linux-Debian datotečnog sustava prikazuje naredna slika. Slika je mapirana i svaki pravokutnik je spojnica prema odgovarajućem opisu. Isto vrijedi i za pojedine pravokutnike pripadne opisima za povratak na ovu sliku.
Slika 5.1.8 Datotečna struktura Linux operativnog sustava. |
Većina Linux distribucija u načelu se drži prikazane strukture, koja je definirana neslužbenim standardom 'Linux File System Hierarchy Standard' (FSSTND) koji definira imena i lokaciju mnoštva imenika i datoteka i nalazi se negdje na Internetu (Google?). Pojedini pravokutnici na slici ujedno su spojnice prema sadržajima koji ih opisuju. Prilikom kreiranja imenika dobro bi bilo da su [/bin], [/lib] i [/sbin] na istoj particiji, a preporuka je da su na toj particiji i [/root] i [/etc].
Datotečni sustavi koje podržava Linux su 'journaling' tipa (FAT na primjer nije) što znači da imaju mogućnost samo oporavka u slučaju naglog isključenja računala (nema UPS?), jer su sve datoteke indeksirane (popisane) u JOURNAL, zapisi na posebnom dijelu diska u kojem se bilježe promjene prema potrebi, a potom se upisuje u datoteke čime se sprječava gubitak podataka i oštećenje samog datotečnog sustava. Otpornost na greške povećava i SUPERBLOCK, odnosno njegove kopije na više mjesta (redundantni blokovi) na disku. On sadrži podatke o datotečnom sustavu u cjelini, od njegove veličine pa do podatka gdje počinje svaki imenik pa nadalje (slično FAT tablici) za svaki datotečni sustav (particiju) posebno.
Na svim slikama 5.1.2 prikazano je što se po komandi ' ls -al ' vidi u korijenskom imeniku operativnog sustava i imenicima koji se trenutno pregledavaju. Kao što je već navedeno, particija diska kao element sustava neće se u datotečnoj strukturi prikazati. U samom vrhu svakog imenika vide se dvije specijalne datoteke ' . ' i ' .. ' (slično DOS operativnom sustavu) koje imaju zadaću:
|
|
|
Navedene točke nisu ništa drugo do vodilice kroz datotečni sustav koje omogućavaju prelaz iz jednog imenika u drugi imenik na višem nivou. Prava ovih dviju datoteka uvijek su ' drwxr-xr-x ', što znači da imaju osobitosti imenika i omogućavaju 'kretanje' kroz datotečni sustav kao nekakav putokaz.
Oznaka korijenskog imenika, odnosno vrha-ishodišta hijerarhijske strukture datotečnog sustava za koji se povezuju svi ostali imenici ili datoteke sustava bilo da pripadaju istoj particiji na kojoj je ishodište datotečnog sustava [ / ] (ili oznaka [ Linux / ] prema slici 5.1 i 5.1.7) ili nekoj drugoj koja je za ishodište zakačena (mount). Pošto je ovo mjesto koje jezgra prvo dohvaća u njemu gotovo da nema datoteka. Tu su uz imenike samo potrebne simboličke spojnice te sve zajedno ne tvori neku značajnu veličinu glede zauzeća prostora diska. Znak ' .. ' na ovom mjestu nema značaja, ali znak ' . ' ima, zato jer označava da je OVDJE moguće, na primjer, nešto kopirati. Izravan prelazak na nivo ishodišta s bilo kojeg mjesta vrši se komandom ' cd / '.
Imenik koji nije ništa drugo do mjesto gdje se čuvaju konfiguracijske datoteke superusera. Odnosno to je 'home' imenik superusera, što se može prepoznati i iz elemenata od kojih je sastavljen PROMPT - voda:~#. Pošto ovaj imenik ne uzima mnogo podataka i mora biti stalno raspoloživ superuseru, ne montira se na posebnoj particiji ili neko drugo mjesto već uz sam korijen stabla datotečne strukture. Pošto podaci superusera ne zauzimaju mnogo mjesta [ Linux / ] particija ne zahtijeva mnogo prostora, svega nekoliko stotina MB. Ako će u ovom imeniku biti nekakav poštanski sandučić moguće će zatrebati malo više prostora. Uz moderne diskove 1 GB za korijensku particiju je više nego dosta.
Imenik koji nužno ne mora biti na zasebnoj particiji kao prema slici 5.1, ali je u ovom primjeru tako prikazano jer poneke distribucije Linuxa upravo takvu strukturu zahtijevaju. U ovom imeniku nalazi se BOOT_LOADER i njegove konfiguracijske datoteke, imenik GRUB ili LILO ovisno o tome koji se LOADER koristi s pripadnim im sadržajima te preslike jezgre (kernel images) s imenima datoteka koje započinju s prefiksom initrd*, a koje mogu imati i ekstenziju .img mada nije nužno. Tu se čuvaju i pripadne im konfiguracijske datoteke. Pošto preslike jezgre ne zauzimaju mnogo diskovnog prostora ova particija ne zahtijeva mnogo mjesta, svega nekoliko stotina MB. Uz moderne diskove 1 GB je više nego dosta, te se može bez bojazni čuvati više verzija preslika jezgre operativnog sustava.
Ovaj imenik sadrži binarne izvršive datoteke raspoložive SVIM korisnicima koji su prijavljeni na sustav. To znači da na sustavu moraju imati izrađen-otvoren KORISNIČKI_RAČUN (account). Komande su ključne riječi koje se koriste prema već navedenoj sintaksi i operativnom sustavu prenosi ih KOMANDNI INTERPRETER - LJUSKA (shell). Kod Debiana podrazumna ljuska je BASH i ona je također komanda prilično velikih mogućnosti. Ako je BASH komanda znači da se može pozvati na izvršavanje. Tada se u postojećoj ljusci otvara nova radna ljuska. Dok se radi u novoj ljusci inicijalna miruje. Tako se može ići iz ljuske u ljusku i ako su instalirani drugi tipovi ljuske mogu se na navedeni način uporabiti. Osim komandi u ovom imeniku je i mali broj simboličkih spojnica prema imeniku [/sbin] koji također sadrži velik broj komandi ali prvenstveno namijenjene za potrebe administratora. Sve datoteke u ovom imeniku imaju prava ' -rwxr-xr-x ', a simboličke spojnice imaju prava ' lrwxrwxrwx '. Dakle, samo administrator neku komandu može zamijeniti s nekom njenom novom verzijom ili joj promijeniti ime (opcija ' w '). Imenik sadrži stotinjak datoteka i u osnovi nema podčinjenih imenika. Tu se ne nalaze datoteke pojedinih servisa, već osnovno da korisnik može izraditi imenik, kopirati datoteku i slično.
drago@voda:~$ dir /bin
bash dmesg hostname mount ping6 stty which
busybox dnsdomainname ip mountpoint ps su zcat
cat echo kill mt pwd sync zcmp
chgrp ed ln mt-gnu rbash tailf zdiff
chmod egrep loadkeys mv readlink tar zegrep
chown false login nano rm tempfile zfgrep
cp fgconsole ls nc rmdir touch zforce
cpio fgrep lsmod nc.traditional rnano true zgrep
date grep mkdir netcat run-parts umount zless
dd gunzip mknod netstat sed uname zmore
df gzexe mktemp pidof sh uncompress znew
dir gzip more ping sleep vdir
drago@voda:~$
drago@voda:~$ ls -al | grep lrwx
lrwxrwxrwx 1 root root 20 2010-04-18 11:43 mt -> /etc/alternatives/mt
lrwxrwxrwx 1 root root 20 2010-04-18 11:43 nc -> /etc/alternatives/nc
lrwxrwxrwx 1 root root 24 2010-04-18 11:43 netcat -> /etc/alternatives/netcat
lrwxrwxrwx 1 root root 16 2010-04-18 11:42 pidof -> ../sbin/killall5
lrwxrwxrwx 1 root root 4 2010-04-18 11:42 rbash -> bash
lrwxrwxrwx 1 root root 4 2010-07-31 22:02 rnano -> nano
lrwxrwxrwx 1 root root 4 2010-04-18 11:42 sh -> bash
drago@voda:~$
Komanda ' dir ' prikazuje sadržaj imenika na koji se odnosi. U ovom slučaju odnosi se na imenik koji se u odnosu na ' / ' naziva ' bin ' i nalazi se u samom vrhu hijerarhijske imenične strukture. Komandna linija ' ls -al | grep lrwx ' primjer je ulančavanja komandi koji kaže da se iz cjelokupnog popisa izdvoje i prikažu samo spojnice. U ovom imeniku nema ni čestitog uređivača datoteka, već samo jedan rudimenti linijski tekstualno orijentirani editor ' ed '. Iz primjera se vidi da komande za pregled sadržaja imenika ' dir ' i ' ls ' ne daju isti ispis jer su uporabljene različite opcije, iako su za obje komande u suštini opcije iste.
Biblioteke su neizostavni dio svakog operativnog sustava. To je skup programskih rutina (objekata) koje služe prilikom kreiranja programske potpore ili ih programska potpora koristi u radu kako bi mogla izvršiti postavljenu joj zadaću. Ove rutine nalaze se u imeniku [/lib] u kojem su dodatni imenici s pripadnim im datotekama, a osobitost svih datoteka je što uglavnom počinju s prefiksom lib* u imenu i imaju ekstenziju .so ili .a. Dijele se na:
Kod Windows operativnih sustava .so datoteke imaju ekvivalent u .dll datotekama. U ovom imeniku su dinamički raspoložive datoteke .so tipa jer po svojoj funkciji više pripada potrebama 'običnog' korisnika te se zbog lakšeg dohvata od strane programske potpore imenik s ovim datotekama nalazi u korijenskom imeniku sustava u na istoj je particiji kao imenik [/bin].
U ovom imeniku nalaze se tipični alati (programska potpora) potrebni administratoru, koje običan korisnik ne može uporabiti. Na primjer komanda ' init ', s kojom je moguće promijeniti nivo uporabljivosti računala.
drago@voda:- (radni imenik korisnika 'drago') drago@voda:~$ whoami (tko sam ja na računalu?) drago drago@voda:~$ drago@voda:~$ cd /sbin (prelazak u imenik [/sbin] ) drago@voda:/sbin:$ dir badblocks fsck.ext3 iptables-restore mkswap ss
blkid fsck.ext4 iptables-save modinfo startpar
blockdev fsck.ext4dev iptunnel modprobe start-stop
bootlogd fsck.minix isosize nameif sulogin
cfdisk fsck.nfs kbdrate pam_tally swapoff
ctrlaltdel getty killall5 pivot_root swapon
debugfs grub-install ldconfig plipconfig sysctl
depmod halt logsave poweroff tc
dhclient hwclock losetup rarp telinit
dhclient3 ifconfig lsmod raw tune2fs
dhclient-script ifdown MAKEDEV reboot udevadm
dumpe2fs ifup mii-tool resize2fs udevd
e2fsck init mke2fs rmmod udevsettle
e2image insmod mkfs route unix_chkpwd
e2label installkernel mkfs.bfs rtacct unix_update
e2undo ip mkfs.cramfs rtmon update-grub
fdisk ip6tables mkfs.ext2 runlevel update-modules
findfs ip6tables-restore mkfs.ext3 sfdisk vol_id
fsck ip6tables-save mkfs.ext4 shadowconfig
fsck.cramfs ipmaddr mkfs.ext4dev shutdown
fsck.ext2 iptables mkfs.minix slattach drago@voda:/sbin:$ drago@voda:/sbin:$ ls -al | grep init (pregled određenog dijela iz gornjeg popisa) -rwxr-xr-x 1 root root 31296 2008-08-12 16:09 init
lrwxrwxrwx 1 root root 4 2010-04-18 11:42 telinit -> init drago@voda:/sbin:$
Simbolička veza ' telinit ' u primjeru vodi na ' init ' datoteku u istom imeniku izrađena je da bi se sačuvao već od prije uvriježen naziv ili na njega ide veza s nekog drugog mjesta koje ne zna za komandu ' init ' ali zna za komandu ' telinit ' koja mu treba. Prema primjeru moglo bi se zaključiti do običan korisnik, koji se utvrđuje izgledom PROMPT-a ili komandom ' whoami ' koja ispisuje njegovo ime, ima prava pozvati ove datoteke na izvršavanje (-rwxr-xr-x). Nema, jer korisniku ROOT nije pridružen niti jedan drugi korisnik u grupi a ono što smije ROOT ne smije nitko. Dakle, prava ne ovise samo zapisu u prvom stupcu. Osim navedenog i raspoloživi put prema imenicima je različit za korisnika i administratora. Komanda ' set ' daje mnoštvo varijabli okruženje među kojima se može iščitati:
path (/bin /usr/bin /usr/local/bin /usr/bin/X11 /usr/games) path (/bin /sbin /usr/bin /usr/sbin /usr/bin/X11 /usr/local/bin /usr/local/sbin)
Običan korisnik može izvršiti samo pregled sadržaja ovog imenika i ništa drugo.
Već je rečeno da na dio ovih datoteka idu izravne simboličke veze iz imenika [/bin] i samo njih može uporabiti običan korisnik. Običan korisnik ne može uporabiti komandu ' init 6 ' na primjer, koja bi inicirala zaustavljanje rada računala i njegovo ponovno pokretanje bez fizičkog gašenja (reboot), ili pak komandu ' init 0 ' koja fizički gasi računalo (shutdown). Navedeni brojevi su nivoi iz poglavlja 5.1.1.
Ovdje su smještene specijalne datoteke koje predstavljaju sklopovlje računala na kojem je instaliran ovaj operativni sustav. Upisivanjem u ovu datoteku ili njenim čitanjem izravno se kontaktira odgovarajući sklop računala, te zbog toga potpuna prava na ove uređaje ostvaruje uglavnom administrator. U slučaju potrebe uređaj se može kreirati pomoću skripte MAKEDEV.
voda/dev# ls -alh | more total 4.0K
drwxr-xr-x 12 root root 3.3K 2010-07-31 21:08 .
drwxr-xr-x 21 root root 4.0K 2010-04-18 11:44 ..
crw-rw---- 1 root audio 14, 4 2010-07-31 21:08 audio
drwxr-xr-x 2 root root 640 2010-07-31 21:08 block
lrwxrwxrwx 1 root root 3 2010-07-31 21:08 cdrom -> hdc
drwxr-xr-x 2 root root 2.4K 2010-07-31 21:08 char
crw------- 1 root root 5, 1 2010-07-31 22:01 console
:
lrwxrwxrwx 1 root root 3 2010-07-31 21:08 dvd -> hdc
lrwxrwxrwx 1 root root 13 2010-07-31 21:08 fd -> /proc/self/fd
brw-rw---- 1 root floppy 2, 0 2010-07-31 21:08 fd0
crw-rw-rw- 1 root root 1, 7 2010-07-31 21:08 full : -rw-r--r-- 1 root root 0 2010-07-31 21:08 .initramfs-tools : srw-rw-rw- 1 root root 0 2010-07-31 21:08 log :
brw-rw---- 1 root disk 3, 0 2010-07-31 21:08 hda
brw-rw---- 1 root disk 3, 1 2010-07-31 21:08 hda1
brw-rw---- 1 root disk 3, 2 2010-07-31 21:08 hda2
brw-rw---- 1 root disk 3, 5 2010-07-31 21:08 hda5
brw-rw---- 1 root cdrom 22, 0 2010-07-31 21:08 hdc
:
lrwxrwxrwx 1 root root 13 2010-07-31 21:08 MAKEDEV -> /sbin/MAKEDEV
:
crw-rw-rw- 1 root root 1, 3 2010-07-31 21:08 null
crw-r----- 1 root kmem 1, 4 2010-07-31 21:08 port
:
lrwxrwxrwx 1 root root 15 2010-07-31 21:08 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 2010-07-31 21:08 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 2010-07-31 21:08 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root root 5, 0 2010-07-31 21:08 tty
crw-rw---- 1 root root 4, 0 2010-07-31 21:08 tty0
crw------- 1 drago tty 4, 1 2010-07-31 22:51 tty1
:
prw-r----- 1 root adm 0 2010-07-31 23:11 xconsole
crw-rw-rw- 1 root root 1, 5 2010-07-31 21:08 zero voda/dev#
Prema prikazanom primjeru prvo slovo u pravima datoteke (_rwxrwxrwx) može imati slijedeće oznake i značenje:
Imenici u sebi sadrže uređaje koji pripadaju jednoj od navedenih grupa. Navedeni uređaji u sebi sadrže glavni i sporedni identifikacijski broj temeljem kojeg se dohvaća upravljački programa uređaja u jezgri. Dakle, sve u ovom imeniku je putokaz ka jezgri.
Citiranje ove stranice: Radić, Drago. " Informatička abeceda " Split-Hrvatska. {Datum pristupa}; https://informatika.buzdo.com/datoteka. Copyright © by Drago Radić. Sva prava pridržana. | Odgovornost |