|
Csatlakoztatás és lecsatolás (mounting, unmounting)
A fájlrendszerek használatba vétele előtt csatlakoztatni
(mount-olni) kell őket. Az operációs rendszer ezután különféle
adminisztratív műveleteket végez, hogy biztos legyen, hogy minden
működik. Mivel a UNIX-ban minden fájl egyetlen könyvtárstruktúrába
illeszkedik bele, a csatlakoztatás művelete az új fájlrendszer
tartalmát úgy jeleníti meg, mintha alkönyvtár lenne egy már
csatlakoztatott fájlrendszerben.
Például a 4.3. ábra három független fájlrendszert
mutat, külön-külön gyökérkönyvtárakkal. Amikor az utóbbi kettőt a
/home és /usr alá csatlakoztatjuk az első fájlrendszeren,
egyetlen fastruktúrát kapunk, mint amilyet a
4.4. ábra mutat.
4.3. ábra:
Három különálló fájlrendszer.
|
4.4. ábra:
/home és /usr csatlakoztatva.
|
Ezek a csatlakoztatások pl. a következő módon hozhatók létre:
A mount parancs ezekben a példákban két argumentumú. Az első az
eszközfájl, ami a lemeznek, vagy partíciónak felel meg, amely a
fájlrendszert tartalmazza. A második a könyvtár, ami alá a
csatlakozást létre kell hozni.
A parancsok utána két fájlrendszer tartalma úgy látszik, mintha a
/home illetve /usr könyvtárak tartalma lenne. Ezt úgy szokás
mondani, hogy pl. a ''/dev/hda2 a /home alá lett csatlakoztatva
(mount-olva)''.
Figyeljük meg az eszközfájl (pl. /dev/hda2 ) illetve a
csatlakozási könyvtár (/home ) közti különbséget. Az eszközfájl a
lemez nyers tartalmához enged hozzáférést, míg a csatolási könyvtáron
keresztül ugyanezeket az adatokat érjük el, csak formázva, fájlok és
könyvtárak formájában. A csatlakozási könyvtárat szokás
csatlakozási pontnak (mount point) is nevezni.
A Linux sok fájrendszer típust támogat, melyek közül a mount
megpróbálja automatikusan kiválasztani a megfelelőt. Használhatjuk a
-t fstype opciót is a típus megadására. (Ez néha
elengedhetetlen is, mert a mount által használt ökölszabályok
nem mindig működnek.) Pl. egy MS-DOS floppy csatlakoztatását a
következőképpen tehetjük meg:
A csatlakozási könyvtár nem kell üres legyen, csak léteznie
kell. Viszont ha voltak fájlok alatt, azok láthatatlanok lesznek a
rendszer számára, amíg a csatlakozás érvényben van. (Pontosabban: a
csatalakoztatáskor már megnyitott fájlok továbbra is elérhetők,
valamint a csatlakozás előtt máshonnét létrehozott kötéseken
(linkeken) keresztül is.) Általában nem szoktak ezzel törődni, de néha
hasznos lehet. Például néhányen szeretik, ha a /tmp és
/var/tmp igaziból ugyanaz, ezért a /tmp -t egy szimbolikus
kötésnek állítják be, mely a /var/tmp -re mutat. A boot folyamat
során, mielőtt a /var csatlakozna, a gyökér fájlrendszeren levő
/var/tmp kerül használatba. Amikor a /var csatolódik,
elérhetetlenné teszi a gyökér fájlrendszer /var/tmp
könyvtárát. Ha nem létezik egy /var/tmp nevű könyvtár a gyökér
fájlrendszeren, a /var csatlakozása előtt nem használhatók
ideiglenes fájlok.
Ha nem szándékozol írni a fájlrendszerre, a -r kapcsolót kell
megadni a mount programnak, hogy csak olvasható
csatlakoztatás (readonly mount) jöjjön létre. Ez azt
eredményezi, hogy a kernel minden írási kísérletet leállít az ilyen
fájlrendszerre, még a fájlok elérési idejének frissítését is. A
csak olvasható csatlakoztatások szükésgesek nem írható
adathordozóknál (pl. CD-ROM) és javíthatják a rendszer stabilitását
(pl. ha a /usr-t csatlakoztatjuk csak olvashatóan.)
A figyelmes olvasó már felfigyelhetett egy logikai problémára. Hogy
csatolódik a legelső, azaz a gyökér fájlrendszer, amikor e fellett
nincs fájlrendszer, amihez csatakozna? Nos a válasz az, hogy egy kis
varázslattal.4.8 A gyökér fájlrendszer mágikusan csatolódik a boot során,
és úgy is vehetjük, hogy mindig csatlakoztatva van. Ha ugyanis a
gyökér fájlrendszer nem csatlakozik, a rendszer fel sem áll. A
fájlrendszer neve, ami ily módon mágikusan csatlakozik, vagy a
kernelbe van fordítva, vagy a LILO állítja be, vagy az rdev
paranccsal tudjuk a kernelt még a boot előtt beállítani.
A gyökér fájlrendszer először általában csak olvashatóan
csatlakozik. Az indító szkriptek ekkor ellenőrzési célokból
lefuttatják a fsck programot, és ha nem volt probléma,
újracsatolják (re-mount) de már írható/olvasható módon. Az
fsck parancsot tilos futtatni írhatóan csatlakoztatott
fájlrendszeren, mivel az fsck futása közbeni változások a
fájlrendszeren mindenképpen hibát okoznak. Mivel az ellenőrzés
alatt a gyökér fájlrendszer csak olvashatóan van csatlakoztatva, az
fsck nyugodtan kijavíthatja az esetleges hibákat, mivel az
újracsatlakoztatás minden metaadatot kiír a fájlrendszerre, amit eddig
a memóriában tartott.
A legtöbb rendszeren más fájlrendszereket is kell csatlakoztatni a
boot folyamán. Ezeket a /etc/fstab fájlban adhatjuk meg. (Lásd a
fstab kézikönyv lapot.) A további fájlrendszerek
csatlakoztatásának részletei sok mindentől függenek, és a
rendszeradminisztrátor állítja be, ha szükséges. Ha kész lesz a
boot-ról szóló fejezet, ott lehet további részleteket olvasni erről.
Amikor egy fájlrendszerre a továbbiakban nincs szükség, lecsatolható a
umount 4.9 A parancs egyargumentumú:
akár az eszközfájl, akár a csatlakozási pont megadható. Például az
előző példa könyvtárainak lecsatolását megtehetjük így is:
Az umount kézikönyvlapján találhatjuk meg a részletes
információkat a parancsról. Nagyon fontos, hogy mindig lecsatoljuk a
csatlakoztatott floppikat. Ne vegyük ki egyszerűen a floppit a
meghajtóból lecsatolás nélkül! A lemez cache-elésel miatt az adatok
nem azonnal íródnak rá a floppira az lecsatolásig, így a floppi
umount nélküli kivétele azt eredményezheti, hogy tartalma
összezagyvált lesz. Ha csak olvastunk a floppiról, ennek esélye igen
kicsi, de ha akár csak véletlenül írtunk rá, az eredmény
katasztrófális lehet.
A csatlakoztatás és a lecsatolás szuperfelhasználói jogosultságokat
kíván meg, azaz csak a root teheti meg. Ennek oka az, hogy ha
bármelyik felhasználó csatlakoztathatna floppit bármely könyvtárhoz,
akkor nagyon könnyű lenne egy trójai falószerű floppit készíteni,
amelyet pl. a /bin -hez csatlakoztatva, a floppin levő program
indulna el az eredeti /bin/sh helyett. Ez pedig lényegében
nullára redukálná a rendszer biztonságát.
A felhasználók azonban gyakran szeretik használni a floppikat, ezért
valahogy meg kell engedni nekik. Ennek több módja van:
- Adjuk meg a felhasználóknak a root jelszót. Ez
nyilvánvalóan rossz megoldás a biztonság szempontjából, de ez a
legkönnyebb. Ha nincs szükség a biztonságra, mint pl. hálózat
nélküli, személyes rendszer esetén, akkor elfogadható.
- Egy program, mint pl. a sudo segítségével engedjük a
felhasználóknak a mount használatát. Ez is nagyon rontja a
biztonságot, de nem ad közvetlenül szuperfelhasználói jogosultságokat
a felhasználónak.4.10
- Bocsássuk az mtools csomagot a felhasználók
rendelkezésére az MS-DOS fájlrendszer használatához. Ekkor nincs
szükség a mount használatára. Ha elegendő MS-DOS-os floppik
használata, akkor ez jó megoldás.
- A floppi eszközöket és a megengedhető csatlakozási pontokat, opciókat
soroljuk fel a /etc/fstab fájlban. (Ez persze együtt használható
az előző ötlettel is, így a legcélszerűbb mindegyiket használni.)
Az utolsó lehetőség pl. a következő módon valósítható meg: Írjuk a
következőket a /etc/fstab fájlba:
/dev/fd0 /floppy msdos user,noauto 0 0
Az egyes oszlopok jelentése: az eszközfájl, a csatlakozási könyvtár, a
fájlrendszer típusa, opciók, mentési frekvencia (amit a dump
használ) és az fsck menetszáma (pass number). Ez utóbbi a boot
során való ellenőrzés rendjét szabályozza; a 0 érték az ellenőrzést
kikapcsolja.
A noauto opció kikapcsolja az automatikus csatlakoztatást,
azaz a rendszer elindulásakor az inicializáló szkriptek által kiadott
mount -a nem csatlakoztatja ezeket. A user opció
megengedi minden felhasználónak a csatlakoztatást, és biztonsági
okokból lehetetlenné teszi a csatlakoztatott lemezen levő programok
futtatását és az itteni eszközfájlok használatát.
Ha megtettük a fenti bejegyzést a /etc/fstab -ba, akkor bármelyik
felhasználó csatlakoztathat egy floppit, melyen msdos
fájlrendszer van:
A floppi kivétele előtt le kell csatolni a umount parancs
használatával.
Ha többféle típusú floppit is szeretnénk használni, több csatlakozási
pontra lehet szükségünk, és a beállítások különbözhetnek a
csatlakozási pontok között. Pl. ha msdos és ext2
floppikat is hasznlni szeretnénk, a következő sorokat írhatjuk a
/etc/fstab -ba:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
/dev/fd0 /ext2floppy ext2 user,noauto 0 0
MS-DOS fájlrendszerek esetében (nemcsak floppiknál) érdemes az elérést
a uid, gid és umask opciókkal
korlátozni. Ezeket a mount kézikönyv lapja írja le
részletesen. Ha nem vagy óvatos, egy MS-DOS fájlrendszert
csatlakoztatva, az azon levő fájlokat legalábbis olvasni mindenki
tudja, ami nem túl jó ötlet.
|