total descendants:: total children::3 26 ❤️
|
Treti diel obcasnika, ze "Wtf Linux?". Tentokrat bude zamerany na vysvetlenie otazky: "Kam do prdele zmizol disk C:?". Pokusim sa popisat, co znamenaju obskurnosti ako /dev/sda1, /mnt/cdroma a kde hladat a kde sa hladat nepokusat. Takisto zabrdnem aj trocha do historie a pristupovych prav v Linuxe. Takze. V starom znamom Windowse mame pismenka diskovych oddielov C: D: E: ... (A: a B: su z historickych dovodov vyhradene pre 2 disketove jednotky - povodne IBM BIOSy mali podporu dvoch disketovych mechanik). Kazdy oddiel ma preto vlastny strom adresarov. Linux (v dalsom texte nerozlisujem Linux, Unix a dalsie a vsetky oznacim Linux) naproti tomu pochadza (filozoficky) z doby davno pred vznikom MS-DOSu a jeho tvorcovia zvolili inu logiku hierarchie suboroveho systemu. V systeme existuje jedine /, co je pociatok vsetkeho. Kazdy dostupny adresar v pocitaci je podadresarom / a neexistuje iny disk. To, ake adresare obsahuje / je dlhe roky viacmenej standardizovane a nepodlieha velkym zmenam: /boot - niekedy aj boot filesystem. Obsahuje obraz jadra, jeho konfigurak (pre kompilaciu) a niekedy aj subory bootloadera GRUB (ak je pouzity) /bin - uzivatelske binarky potrebne k startu systemu. (co to znamena potrebne k startu systemu vysvetlim neskor). Obsahuje jednoduche utility spustitelne uzivatelom. /dev - obsahuje specialne subory zariadeni - sposob, ako pristupovat k zariadeniam v pocitaci podla filozofie "vsetko v pocitaci je subor". /etc - zhromazduje vsetku systemovu konfiguraciu. V spravne navrhnutej distribucii by mala byt vsetka systemova konfiguracia obsiahnuta v tomto adresari. /home - obsahuje domovske adresare uzivatelov. Akasi obdoba "Documents and Settings" z Windows NT. /lib - obsahuje zakladne systemove kniznice a v pripade Linuxu aj moduly jadra. /lost+found - nemusi sa nachadzat vsade. Obvykle byva na filesystemoch ext2, ext3 a ext4. Obsahuje subory, ktore sa stratili zo stromovej struktury a boli najdene pri kontrole disku. /media - sem sa umiestnuju odkazy na primontovane diskove zariadenia. /mnt - do tohto adresara sa obvykle montuju vymenitelne a sietove diskove zariadenia. (co to je montovat, vysvetlim neskor). /opt - takisto aj opt filesystem. Do tohto adresara by sa podla odporucani mali instalovat volitelne, alebo 3rd party (software mimo distribucie) aplikacne baliky, aby nezasahovali do struktury suborov distribucie. /proc - takisto aj proc filesystem. Je virtualny filesystem, co znamena, ze jeho obsah nezodpoveda ziadnemu existujucemu disku v pocitaci. To, co obsahuje, vytvara kernel a reprezentuje to aktualny stav a konfiguraciu jadra pocitaca. /root - je domovsky adresar roota - administratora systemu. /sbin - administratorske binarky potrebne k spusteniu systemu. Obsahuje jednoduche utility urcene k spustaniu administratorom systemu. Pri spusteni beznym uzivatelom obvykle nemaju svoju funkcionalitu. /sys - sys filesystem. Dalsi virtualny filesystem. Obsahuje informacie o tom, ake HW zariadenia su pripojene k pocitacu. /tmp - tmp filesystem. Sluzi na ukladanie docasnych suborov (obrazky z internetu pri prehliadani a podobne). Obvykle sa pri starte systemu maze. /var - var filesystem. Obsahuje subory podliehajuce castej zmene. Sem sa ukladaju napriklad logy, databazy, data www servera a ine. /usr - usr filesystem. Tento adresar je zvlastny tym, ze obsahuje strukturu adresarov podobnu tej, ktora je v /: /usr/bin - su uzivatelske binarky pre bezny beh systemu. 99% aplikacii instalovanych na pocitaci by malo mat v tomto adresari svoj spustaci subor. /usr/sbin - su administratorske binarky pre bezny beh systemu. Obsahuje komplikovanejsie administratorske utility. /usr/doc - obsahuje uzivatelsku dokumentaciu k instalovanym programom a knizniciam. Casto obsahuje aj HOWTOs a FAQs. /usr/lib - obsahuje aplikacne kniznice. Tu sa nachadzaju graficke kniznice, kniznice pre pracu s obrazom, videom, atd. /usr/include - obsahuje hlavickove subory instalovanych kniznic. Vyzadovane su iba v pripade, ze sa niekto chysta nieco skompilovat. /usr/man - obsahuje manualove stranky. Manualove stranky obsahuju dokumentaciu k roznym castiam systemu a su pristupne pomocou programu man. /usr/share - obsahuje zdielane komponenty aplikacii. Kuprikladu fonty, ikony, skiny a podobne. Obvykle sa jedna o datove subory aplikacii. /usr/src - obsahuje casto hlavne zdrojove kody linuxoveho jadra v adresari /usr/src/linux. Umiestnuju sa sem zdrojove kody. /usr/local - je opat zvlastny tym, ze obsahuje podobnu strukturu adresarov, ako /usr samotne. Obsahuje adresare ako /usr/local/bin, sbin, lib, man, share a podobne. Teraz, ked uz vieme, co, podme zistit, preco a ako. Z vyssie uvedeneho vyplyva, ze binarky (spustitelne programy) sa mozu nachadzat v adresaroch /bin, /usr/bin, /usr/local/bin, /sbin, /usr/sbin a /usr/local/sbin. Preco tolko adresarov? V prostredi Windows sa pri instalacii programov pouziva filozofia, ze kazdy program ma svoj hlavny adresar, napriklad C:\Program Files\Program a do tohto adresara si instaluje vsetky subory. Ak pri instalacii instaluje nejake zdielane kniznice, mal by ich instalovat do systemoveho adresara s kniznicami (obvykle C:\Windows\System32). Program si zvacsa vsetky potrebne kniznice vezie so sebou. V prostredi Linuxu je odlisna filozofia. V prvom rade si programovy balik so sebou obvykle nenosi vsetky potrebne kniznice, ale ma nich tzv. zavislosti (o ich riesenie sa stara balickovaci system, ale to je mimo zaberu tohto obcasnika). Na rozdiel od pristupu vsetko do jedneho adresara sa pouziva pristup hrasok k hrasku, mrkva k mrkve. To v praxi znamena, ze ak do systemu doinstalujem novy program, tak jeho spustaci subor (obdoba .exe suboru) pojde do adresara k ostatnym spustacim suborom, kniznice, ktore obsahuje, pojdu do adresara k ostatnym knizniciam, dokumentacia pojde k ostatnej dokumentacii. Aka je vyhoda tohto pristupu? Vo Windowse ak chce clovek spustit program (a nema nanho odkaz v Starte, alebo na ploche), musi sa v prieskumnikovi preklikat priamo k binarke (napriklad do C:\Program Files\WinAmp\WinAmp.exe). V Linuxovom prostredi existuje nastavenie, ktore urcuje, ktore adresare obsahuju binarky. Ak clovek napise prosto napriklad opera, prehladaju sa tieto adresare, ci sa v nich dany subor nachadza. Pri tejto filozofii za predpokladu, ze je Opera nainstalovana sa v niektorom z tychto adresarov program opera najde a je ho mozne spustit. Uzivatela preto vobec nezaujima, kde je dany program nainstalovany. A podla coho urcit, do ktoreho adresara program patri? To nie je vobec vecou uzivatela, nakolko cielovy adresar si programovy balik voli plne samostatne a nie je mozne do toho zasahovat. Vysvetlim vsak, preco existuje adresar /bin, /usr/bin a /usr/local/bin, ked vsetky obsahuju programove binarky. V dobach drevnych, ked boli disky neboli velke, rychle a lacne, ale mali najviac 2 z tychto vlasnosti, bolo treba setrit systemovymi zdrojmi. Preto sa napriklad vo vypoctovych strediskach pouzivali zdielane sietove disky na ktorych bol nainstalovany system a male lacne disky, z ktorych sa system spustal. Sietovy disk ale nejako podla nejakej konfiguracie treba pripojit. Z toho dovodu musela v systeme existovat nejaka minimalna sada utilit, ktora umoznila tieto disky pripojit a system spustit. Tato minimalna sada utilit (dnes v Linuxe znama ako coreutils) patri do adresarov /bin a /sbin. V adresari /bin su tie, ktore mozu vyuzivat aj bezni uzivatelia, v /sbin su administratorske utility. V davnych Unixovych systemoch sa casto kompilovalo. Niekedy sa v aplikaciach robili zmeny, alebo opravy. Take aplikacie nebolo vhodne miesat napriklad s distribucnymi stabilnymi programami. Preto sa pri instalacii aplikacie skompilovanej na mieste zo zdrojovych kodov postupovalo tak, ze sa cela aplikacia ulozila do podadresarov /usr/local/. Binarky takej aplikacie sa preto nachadzaju v /usr/local/bin alebo /usr/local/sbin (opat podla rovnakeho pravidla, ako pri /bin vs. /sbin). Z toho okrem ineho vyplyva, ze na systeme, kde sa nic nekompilovalo, bol adresar /usr/local/ prazdny. Zvysne programove binarky patria do /usr/bin vs. /usr/sbin. Onee a co su to vlatne tie filesystemy, jak som to tam pisal? No vzhladom k tomu, ze system Linux disponuje jedinym /, je nejako potrebne spristupnit obsah zvysnych particii a vymenitelnych diskov. Preto sa v Linuxe disky tzv. montuju do adresarov. Co to znamena? Asi tolko, ze ak sa nejaky disk niekam namontuje, tak cielovy adresar (anglicky mount point - bod pripojenia) zacne miesto svojho skutocneho obsahu zobrazovat obsah toho disku, ktory sa tam pripojil. Povedzme, ze pripojim CD mechaniku do adresara /mnt/cdrom. Potom subor README na CD mediu bude v Linuxe pristupny ako /mnt/cdrom/README. V dobe, ked boli disky male pomale a drahe, bolo financne narocne kupit rychly, alebo velky disk. Preto sa takymi diskami neplytvalo. Napriklad system sa niekedy instaloval na zdielany velky sietovy disk a jednu instalaciu zdielalo niekolko salovych pocitacov. Ak niektoryc adresar v rozpise je oznaceny ako filesystem (napriklad opt filesystem, var filesystem, usr filesystem a pod.) znamena to, ze niekedy bolo zvykom umiestnovat ho na samostatny disk. Preco to tak bolo pri /usr filesysteme, som uz nacrtol. Pri /var filesysteme bolo pohnutkou k tomu to, ze obsahoval rychlo sa meniace data a bolo vhodne, aby bol takyto disk rychly. Bolo by ale plytvanim pouzivat taky rychly disk na staticke data systemu. /opt filesystem mal pohnutky podobne, ako /usr filesystem, akurat tu sa jednalo o aplikacie tretich stran, nie priamo od vyrobcu systemu. /tmp filesystem sa umiestnoval na samostatny disk preto, aby pri vycerpani jeho volneho miesta nedoslo k zruteniu systemu kvoli nemoznosti vytvorit nove subory. Dnes vacsina tychto dovodov na domacich PC neexistuje, ale rozclenenie systemu pre unifikovanost bolo zachovane. Linux takisto obsahuje aj odlisnu spravu pristupovych prav od Windowsu. Kazdy subor v Linuxe ma vlastnika (je nim ten, kto subor vytvoril) a skupinu (obvykle nou byva ta skupina, do ktorej uzivatel patri). Pri praci so suborom je mozne pridelit, alebo odobrat 3 pravomoci: - pravomoc citat subor (Read) - pravomoc zapisovat do suboru (Write) - pravomoc spustit subor (eXecute) Existuju 3 skupiny uzivatelov, ktorym je mozne samostatne a nezavisle nastavit pravomoci: - User - vlastnik suboru - Group - uzivatelia patriaci do tejto skupiny - Ostatni (to maju zo slovenciny) - uzivatelia, ktori nepatria ani do jednej z predoslych skupin. Po instalacii Linuxu je system nastaveny tak, ze vsetko v systeme (vsetky binarne a datove subory) vlastni uzivatel root a uzivatelska skupina root. Ostatni uzivatelia nemaju moznost do suborov zapisovat. Maju vsak moznost ich citat a spustat. Citatelne nie su subory obsahujuce hesla (obvykle /etc/lilo.conf, /etc/sudoers, /etc/shadow), subory obsahujuce potencialne citlive informacie (/lost+found) a obsah domovskych adresarov nepatriacich im. Zapis je povoleny do adresara /tmp, ale len tym stylom, ze sa z neho neda zmazat nic, co uzivatelovi nepatri. Vsetky subory, ktore uzivatel vytvori, alebo potrebuje, by sa mali nachadzat v jeho domovskom adresari (moj je napriklad /home/ventyl/). Tam je ulozena pracovna plocha, uzivatelske dokumenty a uzivatelska konfiguracia. Za beznych okolnosti nikam mimo tohto adresara uzivatel zapisovat nepotrebuje. V pripade prace s vymenitelnymi diskami je to mierne odlisne. Ak vymenitelny disk obsahuje filesystem kompatibilny s Linuxovou spravou prav (ext2, ext3, reiserfs, xfs, jsf a pod.), je mozne mu priamo nastavit prava tak, aby bol pristupny vsetkym uzivatelom (prikaz chmod z rootovskeho konta). Ak sa pripaja napriklad Windowsacky fielsystem (FAT, NTFS), tymto systemom sa musia pristupove prava emulovat. Standardne bezpecne nastavenie je take, ze root smie vsetko a ostatni nesmu nic. Je mozne ho zmenit pri konfiguracii /etc/fstab pomocou volby mode=0666 napriklad. Ak sa to nenastavi spravne, moze sa stat, ze CD, DVD, alebo usb kluc nie su uzivatelovi pristupne. |
| |||||||||||||||||||||||||||||||||||