UNIX shell tutorial
2. A Unix filerendszer
A UNIX legfontosabb alapfogalma a file, ami egy struktúrálatlan byte-sorozat. A DOS-szal összehasonlítva, a Unix filerendszere sokkal egységesebb: felfogása szerint "minden file". Ez azt jelenti, hogy a felhasználó file-jai, a rendszer könyvtárai és a rendszerhez csatlakoztatott hardver eszközök mint file-ok egységesen kezelhetőek.
A file-nevek maximális hossza általában 255 karakter. A kisbetűk és nagybetűk különböznek, szinte minden karakter használható. Azok a file-ok amelyeknek a neve pont karakterrel kezdődik rejtett file-ok. Ezek általában adminisztrációs és konfigurációs információkat tartalmaznak. Minden file-nak van tulajdonosa és egy felhasználói csoporthoz is tartozik. A file-okhoz olvasási, írási, végrehajtási jogok tartoznak, melyek beállíthatók a tulajdonos, a csoportja és mindenki más számára.
A Unix filerendszer hierarchikus felépítésű, a file-ok könyvtarakban vannak tárolva. Egy könyvtárból további ún. alkönyvtárak nyílhatnak, amelyek ugyancsak tartalmazhatnak további file-okat és alkönyvtárakat, és így tovább — egyetlen, közös gyökerű fastruktúrát alkotva.
A Unix filerendszerben több kitüntetett pont létezik a felhasználók számára:
- a gyökérkatalógus (root directory), ez a filerendszer kezdőpontja — /
- az alapkatalógus (home directory), az aktuális felhasználóhoz tartozó kiindulási pont — ~
- egy felhasználó alapkatalógusa (home directory), az aktuális felhasználóhoz tartozó kiindulási pont — ~felhasznalo
- a munkakatalógus (current directory) az a pont, ahol a felhasználó éppen tartózkodik a filerendszerben — .
- a szülőkönyvtár az aktuális fölötti könyvtár — ..
2.1. Általános könyvtárnevek:
/bin A bináris programok könyvtára
/dev A különféle eszközök könyvtára
/etc Egyéb rendszerfile-ok, rendszerint a rendszeradminisztrációs file-ok.
A legtöbb esetben itt van a jelszavakat tároló file is.
/mnt Az ideiglenesen "felakasztott" eszközök becsatolási pontja (lásd mount utasítás)
/usr Felhasználói programok, forrásszövegek, könyvtárak
/lib Fontosabb függvénykönyvtárak - ezeket csak a programozók használják.
/usr/bin Végrehajtható programok (főként segédprogramok)
/usr/lib Utasításkönyvtárak programozóknak
/usr/src Forrásnyelvű szövegek
/usr/local Helyileg telepített programok és tartozékai, egyébb nyilvános dolgok
/usr/local/bin Helyileg telepített futtathatók
/usr/man Az online dokumentáció, amelyet a man paranccsal tudunk megjeleníteni.
2.2. Könyvtárkezelő utasítások:
- a munkakönyvtár nevének kiírása: pwd
- a munkakönyvtár változtatása: cd konyvtarneve
- egy könyvtár átnevezése: mv regi_nev uj_nev
- egy könyvtár tartalomjegyzéke: ls
- új könyvtár létrehozása: mkdir uj_konyvtar_neve
- egy könyvtár letörlése: rmdir
2.3. Filekezelő parancsok:
- Fileok létrehozása
- szövegszerkesztővel
- átirányítással $ cat > fnev
- Fileok átnevezése: mv (move)
- Fileok másolása: cp (copy)
- Fileok törlése: rm (remove)
- Fileok kiírása: cat
- File láncolása könyvtárhoz: ln
- File-jogok beállítása: chmod
- File-csoportjának beállítása: chgrp
- File-tulajdonosának beállítása: chown
szoveg...
szoveg...
.........
CTRL-D
$
2.4. Egy Unix partíció belső szerkezete
Az alábbiakban leírtak nagy vonalakban mutatják meg a Unix- és unix-szerű filerendszerek felépítését. A konkrét részletek már erősen függenek a használt filerendszertől és hardware-architektúrától.
Az első blokk (SUPERBLOCK) tartalmazza a filerendszer adatait, a belső táblák adatait.
Az inode tábla. Az inode név az index-node rövidítése, arra utal, hogy a filerendszerben az állományok jellemzőit tartalmazó inode-okat a rendszerprogramok indexkent használjak.
Az inode tartalmazza az adott file-ra vonatkozó összes lényeges információt:
- az állomány méretét
- típusát
- tulajdonosát
- csoportját
- a hozzáférési jogokat
- az állományt alkotó lemezblokkok fizikai elhelyezkedéséta lemezen
- a láncszámot
- hogy file-ról vagy katalógusról van szó
- a létrehozás időpontját
- az utolsó módosítás időpontját
Nem tartalmazza viszont a szóban forgó állomány nevét, ezt a katalógusfile tartalmazza. Minden könyvtárhoz tartozik egy speciális tartalmú file. Ebben az ún. katalógusfile-ban minden file-hoz tartozik egy rekord, ami a file inode számát és a nevét tartalmazza.
2.5. Láncok létrehozása
A filerendszer egyik sajátossága a láncolás (link). Ez a mechanizmus arra szolgál, hogy egy adott állományt több néven is el lehessen érni. A Unix rendszer kétféle láncolási eljárást ismer, a merev és a lágy láncolást (hard- ill. soft link). A merev láncolás legfőbb jellemzője, hogy a láncolt file teljesen egyenérékű az eredetivel. Ha például van egy állományunk text néven, akkor az ln parancs segítségével elérhetjük, hogy mondjuk szöveg néven is hivatkozhassunk rá.
$ ln text szöveg
Ekkor a láncolt állományok láncszáma (link count) egyel nagyobb értek.
A láncolás mechanizmusa
Amikor egy file-t linkelünk, a megfelelő katalógusba egy új bejegyzést hozunk létre, ami egy már létező és más néven már hivatkozott inode-ra mutat. Az inode táblában növeljük a láncszámot. Tehát iylenkor a file-hoz magához nem nyúlunk. Láncolt file törlésekor töröljük az adott névhez tartozó bejegyzést a megfelelő katalógusfile-ban és az inode táblában a megfelelő rekordban eggyel csökkentjük a láncszámot. Ha a láncszám 1, akkor töröljük a file-t és a hozza tartozó bejegyzést az inode táblában illetve a katalógusfile-ban.
A szimbolikus lánc vagy lágy lánc
Lényege, hogy a szimbolikus link katalógus bejegyzése nem az inode-jára mutat, hanem egy olyan különleges file-ra, ami a láncolt file nevét tartalmazza. A munkakatalógusból a következő utasítást kiadva:
$ ln -s /usr/lib/sendmail.cf sendmail.cf
ott egy sendmail.cf file keletkezik. Ekkor a láncszám nem változik, a file típusnál egy l van, a nevénél pedig a következő található:
sendmail.cf -> /usr/lib/sendmail.cf
Ha olvasni akarjuk a file-t, akkor az előzőekben leírt módon eljutunk a /users/demo katalógusfile sendmail.cf bejegyzéséhez, észrevesszük, hogy egy szimbolikus linkről van szó, az operációs rendszer ekkor megnyitja azt a bizonyos file-t, ami a láncolt nevet tartalmazza, ami a fenti példában a /usr/lib/sendmail.cf . Ezt a már ismert módon megkeresi és megnyitja.
2.6. Mountolás
Mountolásnak (csatolásnak) nevezzük azt a tevékenységet, amikor egy különálló filerendszert becsatolunk egy már meglévőhöz. (pl. egy floppyn levő filerendszert, vagy akár egy távoli számítógép megosztott filerendszerét) Ilyenkor a becsatolandó filerendszer a meglevő filerendszer egy pontján (ez az ún. mount-point, csatolási pont) csatlakozik egy könyvtárhoz, és innentől a teljes fa-struktúra egy oldalágaként érhető el.

Egy floppy lemezt csatolunk be a baloldali unix-szerver filerendszerébe a /mnt/floppy ponthoz.
A csatolás eredményeképp a floppy-n levő /otthonrol/scriptek/proba.sh file a unix-szerveren a
/mnt/floppy/otthonrol/scriptek/proba.sh néven elérhetővé válik.
A fentieknek létezik az ellentétes művelete is, amikor egy előzőleg már csatolt filerendszert-t umountolunk, azaz lecsatolunk a struktúrából.
