Pracujeme v Linuxe, 2. č
asťSúbory, všade samé súbory...
Akiste ste pri prechádzke systémom zistili, že je plný, ba preplnený súbormi. To je v poriadku a je to správne. Každý súbor má svoje pevné miesto a využitie. Bez problémov vieme zistiť, ktorému programu ktorý súbor patrí. V systéme máme teda absolútny prehľad, na rozdiel od Windows95, kde sa nezriedka topíme v množstve knižníc, nápovedných a iných súborov.
Linux, ako každý Unixovský systém, je založený na súboroch. Chcem tým povedať, ž
e aj na zariadenia v adresári /dev, časti jadra v adresári /proc, symbolické a pevné linky, znakové a blokové špeciálne súbory, na sockety (zásuvky) a dokonca aj na adresáre sa možno pozerať ako na súbory a aplikovať na ne príkazy OS a/alebo programovacích jazykov.Druhy súborov
Ako som v úvode spomenul, v Linuxe existuje viacero druhov súborov, pričom každý má svoje osobité použitie.
Práca so súbormi a adresármi
Vypísanie súborov adresára dosiahneme pomocou príkazu ls
. Ako vyzerá samotný listing, vidíte na časti výpisu môjho adresára:00_index.txt mbox.1.gz rar202.exe Mail mod_czech_2_4_0_fix.tgz sdraw3.cfg
Ls automaticky zarovná výstup do viacerých stĺpcov, podľa dĺžky mien súborov. Ak máte súbory s veľmi dlhými názvami, dostanete výstup vo dvoch stĺpcoch.
Samozrejme, ls je schopný o súboroch poskytnúť veľmi veľa informácií. Výpis najdôležitejších parametrov pre ls nájdete v tabuľke. Skúste napríklad
ls l. U mňa to vyzerá tako:frcatel:~$ ls -l total 17574 -rw-r--r-- 1 peterp peterp 6435 Feb 10 13:49 00_index.txt drwx------ 2 peterp peterp 1024 Oct 22 17:37 Mail -rw-r--r-- 1 peterp peterp 10742 Dec 29 10:40 Readme.txt -rw-r--r-- 1 peterp peterp 460327 Feb 3 17:02 TBAV804.ZIP drwxrwxr-x 2 peterp peterp 1024 Feb 3 15:39 bin -rwxr-sr-- 1 root modem 2547 Feb 28 20:14 vytoc -rw------- 1 peterp peterp 187493 Feb 28 13:17 debian-lists
V poradí
zľava doprava dostávame informácie o type a právach aplikovaných na súbor, o počte pevných linkov vzťahujúcich sa ten-ktorý súbor, o vlastníkovi, skupine, veľkosti v bajtoch, o dátume a čase poslednej modifikácie a o mene súboru.Zastavím sa trochu p
ri prvom stĺpci vľavo. Prvé písmeno v ňom určuje typ súboru. Znak - určuje, že sa jedná o obyčajný súbor. d označuje adresár, l znamená symbolický link, c špecifikuje znakové zariadenie, b blokové zariadenie, p označuje spojku (named pipe) a s zásuvku.Po špecifikácii typu súboru nasleduje popis práv (permissions) pre prístup a spúšťanie. Prvá trojica písmen (po type súboru, samozrejme) označuje práva vlastníka, druhá trojica popisuje práva skupiny a tretia trojica určuje práva tých užívateľov, kto
rí nie sú v skupine. r označuje prístup pre čítanie, w pre zápis a x pre spúšťanie súboru. Všimnite si dva súbory z môjho adresára, napríklad Readme.txt a debian-lists. Readme.txt môžu čítať všetci, no len vlastník doň môže zapisovať a nikto ho nemôže spúšťať. Čo sa týka súboru debian-lists, vlastník ho môže čítať a zapisovať doň, ináč nikto tento súbor neprečíta ani neprepíše.Pri adresároch majú všetky atribúty veľmi podobný význam.
r umožní čítať obsah adresára (teda zistiť, čo obsahuje), w povolí zápis do adresára a x umožní prístup do adresára. Chcem upozorniť, že medzi r a x je rozdiel ak má adresár nastavený len r bit, môžete si nechať urobiť listing tohto adresára, ale nemôžete doň vojsť a nemáte prístup k jeho súborom. Naopak, ak má adresár nastavený len x bit, nemôžete si nechať vypísať jeho obsah, ale zato doň môžete vojsť a ak odniekiaľ presne viete, aký súbor sa v ňom nachádza, môžete si ho pozrieť (pravda, ak to práva samotného súboru povoľujú). Je to trošku zapletené vyskúšajte si to sami.Existujú aj ďalšie práva, ktoré sú v listingu reprezentované ďalšími písmenami. Najčastejšie sa môžete stretnúť s písmenami
s a t. S znamená, že súboru je pridelený tzv. suid bit, prípadne sgid bit. Ten, kto spustí tento súbor, dostane pre jeho beh plné práva jeho vlastníka. Obyčajne totiž spustený program má práva podľa toho, kto ho spustil. Pozrite si v listingu súbor vytoc. Jeho vlastníkom je root a súbor je v skupine modem. Skupina má nastavený s-bit. Ten, kto je zaradený do skupiny modem a spustí vytoc, má pre jeho beh práva roota - vlastníka. S-bit sa používa hlavne na udelenie privilégií pre tie programy, ktoré majú byť prístupné viacerým neprivilegovaným užívateľom, a predsa musia v systéme, povedzme, meniť tie nastavenia, ktorými môže hýbať len správca. S-bit môžeme prideliť len vlastníkovi (suid) a skupine (sgid), ostatným nie.T
označuje tzv. sticky bit, lepavosť súboru. Znie to všelijako, ale podstata je prozaická: časti programu po jeho prvom spustení zostanú v RAM, a keď sa bude štartovať druhýkrát, nemusí sa nahrávať z disku, takže jeho spustenie potrvá omnoho kratšie. Pri používaní tohto bitu radím byť veľmi striedmy môže sa stať, že sa program už do RAM nezmestí, a preto sa uloží do odkladacej pamäte na disk. A to už zrýchlenie neprinesie.Sticky bit pre adresáre má už iný význam pokiaľ je nastavený, tak z daného adresára môže užívateľ mazať len tie súbory, ktoré sú jeho, bez ohľadu na zápisové práva daného adresára.
Zmena práv
Na zmenu práv pre súbor slú
ži príkaz chmod. Syntax je veľmi jednoduchá:chmod [augo] [+-=] [rwxst] meno_súboru
Znaky v prvej zátvorke určujú, komu budeme manipulovať s právami.
a zmení práva všetkým, u vlastníkovi súboru, g skupine a o užívateľom mimo skupiny. Môžeme meniť práva viacerým subjektom naraz napríklad skupine a súčasne aj ostatným užívateľom. Ďalej, znamienka + a označujú pridanie či odňatie toho-ktorého práva. Znak = nastaví práve tie práva, ktoré sme uviedli, ostatné zmaže. A nakoniec prichádza špecifikácia samotného práva, ktoré meníme.Iný spôsob, ako zadať chmodu, komu má čo zmeniť, je pomocou čísla. Je to praktickejšie ako určovanie zmien pomocou písmen. Totiž nemôžeme naraz nezávisle od seba meniť práva povedzme skupiny a ostatných, ak zmeny určujeme písmenovo. Potrebovali by sme teda dva príkazy za sebou. Určenie pomocou čísel je naopak veľmi výhodné - jedno číslo je schopné jednoznačne naraz popísať všetky práva súboru. Číslo má 4 cifry, ak ich zadáme menej, tak sa automaticky pred číslo d
oplnia nuly. Každú cifru čísla určíme prostým sčítaním 4, 2 a 1 podľa nasledujúceho pravidla: prvá cifra určuje suid bit (4), sgid bit (2) a sticky bit (1). Ak z týchto práv chceme udeliť viaceré, zodpovedajúce čísla sčítame. Podobne je to pri druhej, tretej i štvrtej cifre, no tam majú čísla 4,2,1 iný význam: čítanie (4), zápis (2) a spúšťanie (1), pričom druhá cifra špecifikuje práva vlastníka, tretia hovorí o skupine a štvrtá o ostatných užívateľoch.Napríklad máme súbor TBAV804.ZIP. Jeho práva vyzerajú takto:
-rw-r--r-- 1 peterp peterp 460327 Feb 3 17:02 TBAV804.ZIP
Predstavme si, že chceme členom skupiny peterp pridať zápisové právo a ostatným užívateľom zatrhnúť akékoľvek práva. Potom by príkazy vyzerali:
chmod g+w TBAV804.ZIP
chmod o-r TBAV804.ZIP
alebo
chmod 0660
Zmena vlastníka a skupiny súboru
V prípade, že potrebujeme zmeniť vlastníka súboru, použijeme príkaz
chown. Príkaz však môže využívať len root. Syntax je jednoduchá:chown nový_vlastník.nová_skupina meno_súboru
Ak za meno nového vlastníka nedáme bodku a novú skupinu, zachová sa existujúca. Ak bodku napíšeme, ale meno skupiny neuvedieme, systém ju automaticky zmení na vlastnú skupinu nového vlastníka (tzn., že ak nový vlastník je
niekto, tak aj skupina bude niekto).Ak potrebujeme len zmeniť skupinu súboru bez zmeny vlastníka, použijeme príkaz
chgrp. Samozrejme, súboru môžeme prideliť len takú skupinu, ktorej sme členmi. Syntax:chgrp nová_skupina meno_súboru.
Programy chmod, chown aj chgrp majú
užitočný parameter R. Je to rekurzívna zmena na všetkých podadresároch so všetkými súbormi, ktoré obsahujú. Ak teda ideme zmeniť prístupové práva, vlastníka alebo skupinu vo veľkej adresárovej štruktúre, s veľkou výhodou použijeme práve R a nemusíme sa unúvať na každý adresár osobitne.
Ďalšie bežné operácie
Povedali sme si veľa o vlastnostiach súborov. No okrem toho, že im všakovako pomeníme vlastnosti, je treba niekedy ich aj presunúť, skopírovať, vytvoriť či vymazať...
Súbory sa kopírujú pomocou príkazu cp. Poradie parametrov je
zdrojový súbor cieľový súbor. Presun súborov realizujeme príkazom mv, poradie parametrov je také isté ako pri cp. Súbory sa vymazávajú pomocou rm. Pokiaľ nás popadla bláznivá hodinka a rozhodli sme sa zmazať nejakú veľkú adresárovú vetvu, použijeme rm rf meno_adresára. Parameter r označuje rekurzívne mazanie a f prinúti rm neklásť nijaké otázky, len mazať. POUŽÍVAŤ OPATRNE!!!Čo sa týka adresárov, vytvárajú sa použitím
mkdir, vymažú sa rmdir (ak sú prázdne).A vytváranie súborov to si povieme nabudúce, ale ak by ste už teraz nemali trpezlivosť a veľmi chceli obohatiť váš domovský adresár o vlastné súbory, vyskúšajte príkaz
cat > meno_súboru. Keď dopíšete posledný znak, na ukončenie a uloženie súboru použite kombináciu <Ctrl><D>.Na ďalšie Linuxenie sa teší
Peter Palúch (
peterp@frcatel.utc.sk )Parameter | Význam |
a | Vypíše všetky súbory, vrátane tých, čo začínajú znakom . |
b | Neštandardné znaky v názve súborov vypíše ako ESC sekvenciu |
d | Adresáre vypíše ako obyčajné súbory a neuvedie ich obsah |
k | Veľkosti súborov bude vypíše v kilobajtoch |
l | V listingu uvedie typ, práva, počet hard linkov, vlastníka, skupinu, veľkosť, čas a meno |
m | Súbory vypíše do riadkov a oddelí čiarkami |
n | Namiesto mien vlastníka a skupiny uvedie číslo vlastníka (UID) a skupiny (GID) |
A | Podobne ako parameter a, vylúči však súbory, čo začínajú znakom . |
F | Ku každému súboru v listingu pridá znak špecifikujúci typ súboru (viď man ls) |
R | Rekurzívne vypíše obsah všetkých podadresárov daného adresára |
I reťazec | Nevypíše tie súbory, ktorých meno obsahuje zadaný reťazec |
--color=? | Nastavuje použitie farieb. Namiesto otáznika treba zadať buď none (nikdy), auto (sám zváži vhodnosť použitia farieb), always (vždy). |
Tabuľka 1 : parametre programu ls.
(vyšlo-vyjde v časopise PCRevue apríl 1998)