Ez a cikk a Linux fájlrendszer fogalmainak nagyon magas szintű tárgyalása. Nem célja egy adott fájlrendszer-típus, például az EXT4 működésének alacsony szintű leírása, és nem is a fájlrendszer-parancsok bemutatása.
Minden általános célú számítógépnek különböző típusú adatokat kell tárolnia egy merevlemezen (HDD) vagy valamilyen egyenértékű eszközön, például USB-memóriakártyán. Ennek több oka is van. Először is, a RAM elveszíti a tartalmát, amikor a számítógépet kikapcsolják. Léteznek olyan nem-illékony RAM-típusok, amelyek képesek megtartani az ott tárolt adatokat a tápellátás kikapcsolása után is (például az USB-memóriastickekben és a szilárdtest-meghajtókban használt flash RAM), de a flash RAM sokkal drágább, mint a szabványos, illékony RAM, például a DDR3 és más, hasonló típusok.
A második ok, amiért az adatokat merevlemezen kell tárolni, az, hogy még a szabványos RAM is drágább, mint a lemezterület. Mind a RAM, mind a lemezek költségei gyorsan csökkentek, de a RAM még mindig vezet a bájtonkénti költségek tekintetében. A bájtonkénti költség gyors kiszámítása a 16 GB RAM és a 2 TB-os merevlemez költségei alapján azt mutatja, hogy a RAM egységenként körülbelül 71-szer drágább, mint a merevlemez. A RAM tipikus költsége manapság bájtonként körülbelül 0,00000000000043743750 dollár.
Egy gyors történelmi megjegyzés, hogy a jelenlegi RAM-költségeket perspektívába helyezzük: a számítástechnika legelső napjaiban a memória egyik típusa a CRT-képernyőn lévő pontokon alapult. Ez nagyon drága volt, kb. 1,00 dollárba került bitenként!
Definíciók
A fájlrendszerekről sokféle és zavaros módon lehet hallani beszélni. Magának a szónak is többféle jelentése lehet, és előfordulhat, hogy egy vita vagy dokumentum kontextusából kell megkülönböztetni a helyes jelentést.
Megkísérlem meghatározni a “fájlrendszer” szó különböző jelentéseit az alapján, ahogyan megfigyeltem, hogy különböző körülmények között használják. Megjegyzem, hogy miközben megpróbálok megfelelni a szabványos “hivatalos” jelentéseknek, a szándékom az, hogy a kifejezést a különböző használatok alapján határozzam meg. Ezeket a jelentéseket a cikk következő részeiben részletesebben is megvizsgáljuk.
- A teljes Linux könyvtárstruktúra, kezdve a legfelső (/) gyökérkönyvtárral.
- Egy adott típusú adattárolási formátum, például EXT3, EXT4, BTRFS, XFS stb. A Linux közel 100 típusú fájlrendszert támogat, köztük néhány nagyon régit és néhányat a legújabbak közül is. Mindegyik fájlrendszer-típus saját metaadatstruktúrákat használ az adatok tárolásának és elérésének meghatározására.
- Egy adott típusú fájlrendszerrel formázott partíció vagy logikai kötet, amely a Linux fájlrendszer egy megadott csatolási pontjára csatolható.
A fájlrendszer alapvető funkciói
A lemez tárolása szükségszerűség, amely néhány érdekes és megkerülhetetlen részletet hoz magával. Nyilvánvaló, hogy egy fájlrendszert arra terveztek, hogy helyet biztosítson az adatok nem illékony tárolására; ez a végső funkciója. Ebből a követelményből azonban sok más fontos funkció is következik.
Minden fájlrendszernek biztosítania kell egy névteret – azaz egy elnevezési és szervezési módszertant. Ez határozza meg, hogyan lehet egy fájlt elnevezni, különösen a fájlnév hosszát és a fájlnevekhez használható karakterek részhalmazát a rendelkezésre álló karakterek teljes halmazából. Meghatározza továbbá a lemezen lévő adatok logikai struktúráját, például a könyvtárak használatát a fájlok rendszerezésére, ahelyett, hogy egyetlen, hatalmas konglomerátumba gyűjtenénk őket.
A névtér meghatározása után szükség van egy metaadatstruktúrára, amely a névtér logikai alapját biztosítja. Ez magában foglalja a hierarchikus könyvtárszerkezet támogatásához szükséges adatstruktúrákat; a lemezen lévő helyből használt és szabad blokkok meghatározására szolgáló struktúrákat; a fájlok és könyvtárak nevének fenntartását lehetővé tevő struktúrákat; a fájlokra vonatkozó információkat, például a méretüket és a létrehozásuk, módosításuk vagy utolsó elérésük időpontját; valamint a fájlhoz tartozó adatok helyét vagy helyeit a lemezen. Az egyéb metaadatok a lemez alosztályaira, például a logikai kötetekre és partíciókra vonatkozó magas szintű információk tárolására szolgálnak. Ezek a magasabb szintű metaadatok és az általuk reprezentált struktúrák tartalmazzák a meghajtón vagy partíción tárolt fájlrendszert leíró információkat, de elkülönülnek a fájlrendszer metaadataitól és függetlenek azoktól.
A fájlrendszerekhez szükség van egy alkalmazásprogramozási felületre (API) is, amely hozzáférést biztosít a fájlrendszer objektumait, például fájlokat és könyvtárakat manipuláló rendszerfunkciós hívásokhoz. Az API-k olyan feladatokat biztosítanak, mint a fájlok létrehozása, mozgatása és törlése. Olyan algoritmusokat is biztosít, amelyek olyan dolgokat határoznak meg, mint például, hogy egy fájl hol helyezkedik el a fájlrendszerben. Az ilyen algoritmusok figyelembe vehetnek olyan célokat, mint a sebesség vagy a lemez töredezettségének minimalizálása.
A modern fájlrendszerek biztonsági modellt is biztosítanak, amely a fájlok és könyvtárak hozzáférési jogainak meghatározására szolgáló séma. A Linux fájlrendszer biztonsági modellje segít biztosítani, hogy a felhasználók csak a saját fájljaikhoz férjenek hozzá, másokéhoz vagy magához az operációs rendszerhez nem.
A végső építőelem a fenti funkciók megvalósításához szükséges szoftver. A Linux a rendszer és a programozó hatékonyságának növelésére egyaránt kétrészes szoftveres megvalósítást használ.
1. ábra: A Linux kétrészes fájlrendszer szoftveres megvalósítása.
A kétrészes megvalósítás első része a Linux virtuális fájlrendszer. Ez a virtuális fájlrendszer egyetlen parancskészletet biztosít a rendszermag és a fejlesztők számára az összes típusú fájlrendszer eléréséhez. A virtuális fájlrendszer szoftvere meghívja a különböző típusú fájlrendszerekhez való kapcsolódáshoz szükséges speciális eszközmeghajtókat. A fájlrendszer-specifikus eszközillesztőprogramok a megvalósítás második részét képezik. Az eszközillesztő értelmezi a szabványos fájlrendszer-parancskészletet a partíción vagy logikai köteten lévő fájlrendszer típusára jellemző parancsokra.
Könyvtárszerkezet
Mint általában nagyon szervezett Szűz, szeretem, ha a dolgokat kisebb, szervezett csoportokban tárolják, nem pedig egy nagy vödörben. A könyvtárak használata segít abban, hogy tárolni, majd megtalálni tudjam a kívánt fájlokat, amikor keresem őket. A könyvtárakat mappáknak is nevezik, mert egyfajta fizikai íróasztal analógiájára olyan mappáknak tekinthetők, amelyekben a fájlokat tárolják.
A Linuxban és sok más operációs rendszerben a könyvtárak fa-szerű hierarchiába szerkeszthetők. A Linux könyvtárstruktúrája jól definiált és dokumentált a Linux Filesystem Hierarchy Standard (FHS) szabványban. A könyvtárak elérésekor ezekre a könyvtárakra való hivatkozás a szekvenciálisan mélyebb könyvtárnevek használatával valósul meg, amelyeket az előrevágott kötőjelek (/) kötnek össze, mint például /var/log és /var/spool/mail. Ezeket nevezzük útvonalaknak.
A következő táblázatban nagyon röviden felsoroljuk a szabványos, jól ismert és meghatározott legfelső szintű Linux könyvtárakat és azok célját.
könyvtár | leírás |
---|---|
/ (root fájlrendszer) | A root fájlrendszer a fájlrendszer legfelső szintű könyvtára. Ennek kell tartalmaznia a Linux rendszer indításához szükséges összes fájlt, mielőtt más fájlrendszereket csatlakoztatnánk. Tartalmaznia kell az összes szükséges futtatható programot és könyvtárat, amelyek a többi fájlrendszer indításához szükségesek. A rendszer indítása után az összes többi fájlrendszer a gyökér fájlrendszer alkönyvtáraiként, szabványos, jól definiált csatolási pontokra kerül felcsatolásra. |
/bin | A /bin könyvtár a felhasználói futtatható fájlokat tartalmazza. |
/boot | A Linux számítógép indításához szükséges statikus bootloader és kernel futtatható és konfigurációs fájlokat tartalmazza. |
/dev | Ez a könyvtár tartalmazza a rendszerhez csatlakoztatott minden hardvereszköz eszközfájljait. Ezek nem eszközillesztők, hanem olyan fájlok, amelyek a számítógépen lévő minden egyes eszközt képviselnek, és megkönnyítik az eszközök elérését. |
/etc | A gazdaszámítógép helyi rendszerkonfigurációs fájljait tartalmazza. |
/home | A felhasználói fájlok tárolására szolgáló könyvtár. Minden felhasználónak van egy alkönyvtára a /home könyvtárban. |
/lib | A rendszer indításához szükséges megosztott könyvtárfájlokat tartalmazza. |
/media | A tárhelyhez csatlakoztatható külső cserélhető médiaeszközök, például USB pendrive-ok csatlakoztatásának helye. |
/mnt | A hagyományos fájlrendszerek (mint a nem cserélhető adathordozók) ideiglenes csatolási pontja, amely akkor használható, amikor a rendszergazda javít vagy dolgozik egy fájlrendszeren. |
/opt | Az opcionális fájlokat, például a gyártó által szállított alkalmazási programokat itt kell elhelyezni. |
/root | Ez nem a root (/) fájlrendszer. Ez a root felhasználó otthoni könyvtára. |
/sbin | A rendszer bináris fájljai. Ezek a rendszer adminisztrációjához használt futtatható fájlok. |
/tmp | Az ideiglenes könyvtár. Az operációs rendszer és számos program használja az ideiglenes fájlok tárolására. A felhasználók is tárolhatnak itt ideiglenesen fájlokat. Vegye figyelembe, hogy az itt tárolt fájlok előzetes értesítés nélkül bármikor törölhetők. |
/usr | Ezek a megosztott, csak olvasható fájlok, beleértve a futtatható bináris programokat és könyvtárakat, man fájlokat és más típusú dokumentációkat. |
/var | Változó adatfájlokat tárolnak itt. Ide tartozhatnak például a naplófájlok, a MySQL és más adatbázis-fájlok, a webszerver adatfájljai, az e-mail bejövő fájlok és még sok más. |
Az 1. táblázatban látható könyvtárak és alkönyvtáraik, valamint azok alkönyvtárai, amelyek teás színű háttérrel rendelkeznek, a root fájlrendszer szerves részének tekinthetők. Ez azt jelenti, hogy nem hozhatók létre külön fájlrendszerként és nem mountolhatók indításkor. Ennek az az oka, hogy ezeknek (pontosabban tartalmuknak) jelen kell lenniük az indításkor ahhoz, hogy a rendszer megfelelően tudjon bootolni.
A /media és /mnt könyvtárak a gyökérfájlrendszer részét képezik, de soha nem tartalmazhatnak adatokat. Inkább csak ideiglenes csatolási pontok.
A többi könyvtárnak, azoknak, amelyeknek az 1. táblázatban nincs háttérszínük, nem kell jelen lenniük a rendszerindításkor, hanem később, a rendszerindítás során lesznek csatolva, amikor a gépet felkészítik a hasznos munkára.
Az egyes könyvtárakról és számos alkönyvtárukról részletesen a hivatalos Linux Filesystem Hierarchy Standard (FHS) weboldalon olvashat. A Wikipédia is jó leírást tartalmaz az FHS-ről. Ezt a szabványt a lehető legszorosabban kell követni a működési és funkcionális konzisztencia biztosítása érdekében. Függetlenül attól, hogy milyen fájlrendszertípusokat használnak egy gépen, ez a hierarchikus könyvtárszerkezet ugyanaz.
Linux egységes könyvtárszerkezet
Néhány nem Linux operációs rendszerű PC-n, ha több fizikai merevlemez vagy több partíció van, minden lemezhez vagy partícióhoz egy meghajtóbetű tartozik. Tudni kell, hogy egy fájl vagy program melyik merevlemezen található, például C: vagy D:. Ezután parancsként kiadja a meghajtó betűjelét, például D:, hogy a D: meghajtóra váltson, majd a cd paranccsal a megfelelő könyvtárba vált a kívánt fájl megtalálásához. Minden merevlemez különálló és teljes könyvtárfával rendelkezik.
A Linux fájlrendszer az összes fizikai merevlemezt és partíciót egyetlen könyvtárstruktúrában egyesíti. Minden a tetején kezdődik – a gyökér (/) könyvtárban. Az összes többi könyvtár és azok alkönyvtárai az egyetlen Linux gyökérkönyvtár alatt helyezkednek el. Ez azt jelenti, hogy csak egyetlen könyvtárfa van, amelyben a fájlok és programok kereshetők.
Ez csak azért működhet, mert egy fájlrendszert, például a /home, /tmp, /var, /opt vagy /usr fájlrendszert a / (gyökér) fájlrendszertől eltérő fizikai merevlemezeken, más partíción vagy más logikai kötetben lehet létrehozni, majd a gyökér fájlrendszer fájának részeként egy csatolási pontra (könyvtárra) csatolni. Még az olyan cserélhető meghajtók is, mint egy USB pendrive vagy egy külső USB vagy ESATA merevlemez, felcsatolhatók a gyökér fájlrendszerre, és annak a könyvtárfának szerves részévé válnak.
Egy jó ok arra, hogy ezt tegyük, nyilvánvalóan egy Linux disztribúció egyik verziójáról egy másikra való frissítéskor, vagy egyik disztribúcióról egy másikra való váltáskor. Általánosságban, és eltekintve az olyan frissítési segédprogramoktól, mint a dnf-upgrade a Fedorában, bölcs dolog időnként újraformázni az operációs rendszert tartalmazó merevlemez(ek)et egy frissítés során, hogy pozitívan eltávolítsuk az idővel felhalmozódott kacatokat. Ha a /home a root fájlrendszer része, akkor azt is újra kell formázni, és akkor egy biztonsági mentésből kell visszaállítani. Ha a /home külön fájlrendszer, akkor a telepítőprogram külön fájlrendszerként fogja ismerni, és a formázása kihagyható. Ez vonatkozhat a /var-ra is, ahol az adatbázis, az e-mail postafiókok, a weboldal és egyéb változó felhasználói és rendszeradatok tárolódnak.
A Linux könyvtárfa bizonyos részeinek külön fájlrendszerként való fenntartásának más okai is vannak. Például réges-régen, amikor még nem voltam tisztában a lehetséges problémákkal, amelyek azzal kapcsolatosak, hogy az összes szükséges Linux könyvtárat a / (gyökér) fájlrendszer részeként tartom nyilván, sikerült megtöltenem a home könyvtáramat nagyszámú, nagyon nagy méretű fájlokkal. Mivel sem a /home könyvtár, sem a /tmp könyvtár nem voltak különálló fájlrendszerek, hanem egyszerűen a root fájlrendszer alkönyvtárai, a teljes root fájlrendszer megtelt. Nem maradt hely az operációs rendszernek ideiglenes fájlok létrehozására vagy a meglévő adatfájlok bővítésére. Először az alkalmazásprogramok kezdtek panaszkodni, hogy nincs hely a fájlok mentésére, majd maga az operációs rendszer is nagyon furcsán kezdett viselkedni. Az egyfelhasználós üzemmódba való indítás és az otthoni könyvtáramban lévő hibás fájlok törlése lehetővé tette, hogy újra működőképes legyek. Ezután újratelepítettem a Linuxot egy eléggé szabványos több fájlrendszert tartalmazó beállítással, és meg tudtam akadályozni, hogy a rendszer újra teljesen összeomoljon.
Egyszer volt egy olyan helyzetem, amikor egy Linux host tovább futott, de megakadályozta, hogy a felhasználó a GUI desktop segítségével bejelentkezzen. Be tudtam jelentkezni a parancssori felület (CLI) segítségével helyileg az egyik virtuális konzol segítségével, távolról pedig SSH segítségével. A probléma az volt, hogy a /tmp fájlrendszer megtelt, és néhány, a GUI-asztalhoz szükséges ideiglenes fájlt nem lehetett létrehozni a bejelentkezéskor. Mivel a CLI bejelentkezés nem követelte meg a /tmp állományok létrehozását, az ottani helyhiány nem akadályozott meg abban, hogy a CLI segítségével bejelentkezzek. Ebben az esetben a /tmp könyvtár egy különálló fájlrendszer volt, és a kötetcsoportban, amelynek a /tmp logikai kötet része volt, bőven volt szabad hely. Egyszerűen kibővítettem a /tmp logikai kötetet olyan méretűre, amely megfelelt a friss ismereteimnek az adott állomáson szükséges ideiglenes fájlterület mennyiségéről, és a probléma megoldódott. Megjegyzendő, hogy ez a megoldás nem igényelt újraindítást, és amint az /tmp fájlrendszer megnagyobbodott, a felhasználó képes volt bejelentkezni az asztalra.
Egy másik helyzet akkor történt, amikor egy nagy technológiai vállalatnál laboradminisztrátorként dolgoztam. Az egyik fejlesztőnk rossz helyre (/var) telepített egy alkalmazást. Az alkalmazás összeomlott, mert a /var fájlrendszer megtelt, és a naplófájlok, amelyeket a /var/log fájlrendszerben tárolnak, a helyhiány miatt nem tudtak új üzeneteket csatolni. A rendszer azonban továbbra is működött, mert a kritikus / (root) és /tmp fájlrendszerek nem teltek meg. A hibás alkalmazás eltávolítása és újratelepítése a /opt fájlrendszerbe megoldotta a problémát.
Fájlrendszer típusok
A Linux körülbelül 100 partíciótípus olvasását támogatja; létrehozni és írni csak néhányat tud ezek közül. De lehetséges – és nagyon gyakori – különböző típusú fájlrendszerek csatlakoztatása ugyanarra a gyökér fájlrendszerre. Ebben az összefüggésben fájlrendszerekről a merevlemez egy partícióján vagy logikai kötetén lévő felhasználói adatok tárolásához és kezeléséhez szükséges struktúrák és metaadatok szempontjából beszélünk. A Linux fdisk parancsa által felismert fájlrendszeri partíciótípusok teljes listáját itt közöljük, hogy érzékeltessük, milyen nagyfokú kompatibilitást biztosít a Linux nagyon sokféle rendszerrel.
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT
Az ilyen sok partíciótípus olvasási képességének támogatásának fő célja a kompatibilitás és legalább némi átjárhatóság biztosítása más számítógépes rendszerek fájlrendszereivel. A Fedora új fájlrendszer létrehozásakor rendelkezésre álló választási lehetőségeket a következő lista mutatja.
- btrfs
- cramfs
- ext2
- ext3
- ext4
- fat
- gfs2
- hfsplus
- minix
- msdos
- ntfs
- reiserfs
- vfat
- xfs
.
Más disztribúciók támogatják különböző fájlrendszer típusok létrehozását. A CentOS 6 például csak a fenti listában félkövérrel kiemelt fájlrendszerek létrehozását támogatja.
Mounting
A Linuxban egy fájlrendszer “mountolása” kifejezés a számítástechnika korai időszakára utal, amikor egy szalagot vagy cserélhető lemezcsomagot fizikailag kellett egy megfelelő meghajtóeszközre mountolni. Miután fizikailag elhelyezték a meghajtón, a lemezcsomagon lévő fájlrendszert az operációs rendszer logikailag felcsatolta, hogy a tartalma elérhetővé váljon az operációs rendszer, az alkalmazási programok és a felhasználók számára.
A csatolási pont egyszerűen egy könyvtár, mint bármelyik másik, amely a gyökér fájlrendszer részeként jön létre. Így például a home fájlrendszer a /home könyvtárba van mountolva. A fájlrendszereket más, nem gyökérfájlrendszerek csatolási pontjaira is lehet mountolni, de ez ritkábban fordul elő.
A Linux gyökérfájlrendszerét a rendszerindítási sorrendben nagyon korán a gyökérkönyvtárba (/) mountoljuk. A többi fájlrendszert később, a Linux indítóprogramjai, vagy az rc a SystemV alatt, vagy a systemd az újabb Linux kiadásokban. A fájlrendszerek mountolását az indítási folyamat során az /etc/fstab konfigurációs fájl kezeli. Könnyen megjegyezhető, hogy az fstab a “fájlrendszertábla” rövidítése, és a csatolandó fájlrendszerek, a kijelölt csatolási pontok és az adott fájlrendszerekhez esetleg szükséges opciók listáját tartalmazza.
A fájlrendszereket a mount paranccsal egy meglévő könyvtárba/csatolási pontra csatoljuk. Általában a csatolási pontként használt könyvtárnak üresnek kell lennie, és nem tartalmazhat más fájlokat. A Linux nem akadályozza meg a felhasználókat abban, hogy egy fájlrendszert egy már meglévő vagy fájlokat tartalmazó könyvtárra szereljenek. Ha egy fájlrendszert egy már létező könyvtárra vagy fájlrendszerre csatol, az eredeti tartalom el lesz rejtve, és csak az újonnan csatolt fájlrendszer tartalma lesz látható.
Következtetés
Remélem, hogy a fájlrendszer kifejezéssel kapcsolatos esetleges zavarok egy részét sikerült tisztázni ezzel a cikkel. Hosszú idő és egy nagyon hasznos mentor kellett ahhoz, hogy igazán megértsem és értékeljem a Linux fájlrendszer összetettségét, eleganciáját és funkcionalitását annak minden jelentésében.
Ha kérdésed van, kérlek, írd meg az alábbi hozzászólásokba, és megpróbálok válaszolni rájuk.
Jövő hónapban
Egy másik fontos fogalom, hogy a Linux számára minden egy fájl. Ennek a koncepciónak van néhány érdekes és fontos gyakorlati alkalmazása a felhasználók és a rendszergazdák számára. Azért említem ezt, mert érdemes elolvasni a “Minden egy fájl” című cikkemet a jövő hónapra tervezett, a /dev könyvtárról szóló cikkem előtt.