.


[*]
[*]
[*]

[*]
index


  
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.
\includegraphics{disks/hd-mount-separate.ps}


  
4.4. ábra: /home  és /usr  csatlakoztatva.
\includegraphics{disks/hd-mount-mounted.ps}

Ezek a csatlakoztatások pl. a következő módon hozhatók létre:
\begin{tscreen}
\verb*\vert$ \vert {\sl mount /dev/hda2 /home} \\
\verb*\vert$ \vert {\sl mount /dev/hda3 /usr} \\
\verb*\vert$ \vert
\end{tscreen}

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:


\begin{tscreen}
\verb*\vert$ \vert {\sl mount -t msdos /dev/fd0 /floppy} \\
\verb*\vert$ \vert
\end{tscreen}

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:
\begin{tscreen}
\verb*\vert$ \vert {\sl umount /dev/hda2 } \\
\verb*\vert$ \vert {\sl umount /usr} \\
\verb*\vert$ \vert
\end{tscreen}
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:
\begin{tscreen}
\verb*\vert$ \vert {\sl mount /floppy} \\
\verb*\vert$ \vert
\end{tscreen}

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.

[*]
Linux rendszeradminisztrátorok kézikönyve (első javított változat; SAG-HU 0.6b1)