| A könyvtár
Fentebb utaltunk rá, könyvtár esetében kicsit máshogy működik a dolog. A futtatási jog könyvtár esetén belépési engedélyt takar, magyarán beleléphetünk a könyvtárba. Azonban ez még nem jelenti azt, hogy ott bármit is csinálhatunk, ugyanis például a könyvtár tartalmának lekérdezéséhez már olvasási jog kell, az írásról nem is beszélve... Előállhat például az a furcsa helyzet, hogy a könyvtárba beleléphetünk, de nem nézhetjük meg a tartalmát, de a fordítottja is: a könyvtár tartalma látható számunkra, mégsem léphetünk bele.
A linkek
Linux/Unix rendszerek esetében ha egy fájlt több helyen is használni akarunk, lehetőségünk van linkek létrehozására, melyek az adott fájlra mutatnak. Kétféle linket különböztetünk meg: szimbolikus linket (a továbbiakban symlink) és un. hard linket. A kettő közt igen lényeges különbségek vannak.
A symlink. Az egyszerűbb és könnyebben használható link típus. Ez tulajdonképp egy fájl, aminek tartalma meghatározza, hogy melyik fájlra mutat. Tehát jól megkülönböztethető az eredeti fájl, és a rámutató link. Amennyiben a fájlt, amire a link mutat töröljük, megmarad a link, csak épp érvénytelen helyre mutat.
Azt, hogy a fájl symlink, a jogosultsági tábla legelején láthatjuk: az első karakter egy "l" betű lesz:
bbt@bbt:~/12$ ls -l itport2.hu lrwxrwxrwx 1 bbt bbt 9 2006-03-25 12:56 itport2.hu -> itport.hu
(Az itport2.hu symlink az itport.hu fájlra mutat.)
A hard link Lényegesen korlátozottabban használható link típus, kizárólag partíción belül lehet hard linket létrehozni. A leglényegesebb különbség, hogy ebben az esetben nincs eredeti "fájl" és "link". Magát a linket is mélyebben kell keresni: Linuxos fájlrendszerekben található egy tábla (inode tábla), amelyben a fájlok neveit rendelik hozzá az adatterületen található tényleges adathoz. Hard link esetében két bejegyzés is mutat ugyanarra a területre. Amennyiben az egyiket töröljük, az eltűnik, de a másik megmarad. Csak az inode táblabeli bejegyzés tűnt el. A hard link előnye, hogy az elérés sokkal gyorsabb, mint symlink esetén, ami egyes műveleteknél fontos lehet, hátrányát fentebb említettük: csak partíción belül értelmes (mivel a másik partíció egy másik inode táblát is jelent...) Ha egy fájl hardlink is egyben, azt nem a jogosultsági tábláján látjuk, hanem az utána álló számon:
bbt@bbt:~/12$ ls -l itport.hu -rwxrwxrwx 2 bbt bbt 0 2006-03-25 12:51 itport.hu
bbt@bbt:~/12$ ls -l itport3.hu -rwxrwxrwx 2 bbt bbt 0 2006-03-25 12:51 itport3.hu
(Az itport.hu és az itport3.hu mutat ugyanarra a tartalomra, hard linkek.)
Speciális jogok.
Setuid (set user identy), setgid (set group identy) Egyes programoknál szükség lehet speciális jogokra. Általános példa erre a passwd parancs: ezzel a paranccsal tudjuk megváltoztatni saját jelszavunkat (rendszergazdaként másokét is), azonban ennek a parancsnak bele kell írni olyan fájlba is, amihez csak rendszergazdai jogokkal férhet hozzá - a jelszófájlba. Felmerül tehát az igény, hogy ilyen esetekben ne saját jogkörünkkel futtassuk az adott programot. Erre való a setuid bit. Amennyiben egy fájlra - esetünkben parancsfájlra ez a bit be van billentve, úgy amikor a parancsot kiadjuk, az a műveleteket kvázi-rendszergazdaként hajtja végre, és ugyanúgy ír a jelszófájlba, mintha azt rendszergazdaként tennénk. Nincs ez másként a setgid esetében sem, csak itt nem felhasználóra, hanem csoportra vetítjük ki a tulajdonságot.
Sticky bit A szokásos "minden cikkben van egy problémás rész"-hez érkeztünk. Régebbi Linuxokon volt igazából értelme fájlra nézve, ilyenkor lényegében a fájlt használó processz lefutása után a fájlt továbbra is bent tartotta a memóriában, vagy Swap-ben. Könyvtárnál ennél szebben is sikerül megfogalmazni: a könyvtárra rakott sticky bit esetében a szükséges jogosultságon kívűl még tulajdonosa is kell, hogy legyünk a benne lévő fájlnak, hogy törölhessük.
A fentebbi tulajdonságok is láthatók, ha kilistázzuk a jogosultsági listát, pl.: az előbb említett fájlon, ha bebillentjük mindhárom bitet:
bbt@bbt:~/12$ ls -l itport.hu -rwurwgrwt 2 bbt bbt 0 2006-03-25 12:51 itport.hu
Amint látható a tulajdonos futtatási jogánál az x lecserélődött u-ra (setuid), a csoportnál g-re (setgid), mindenki másnál meg t-re (sticky).
Speciális fájltípusok
Fentebb is találkoztunk már vele. Egy fájl esetében is állhat más betű a jogosultsági lista első helyén. Nézzük mik ezek:
d - Ha könyvtárról van szó. l - ha symlimkről van szó. Ezek már ismerősek. A tényleg speciálisak:
A /dev könyvtár alatt találhatók speciális eszközfájlok, melyeknél ez lehet "b" (blokk eszköz, block devices) pl.:
bbt@bbt:~/12$ ls -l /dev/hda1 brw-rw---- 1 root disk 3, 1 2006-03-07 22:27 /dev/hda1
(A primary master vincseszter első partíciójára mutató blokk eszköz)
Lehet "c" pl.:
bbt@bbt:~/12$ ls -l /dev/dsp0 crw-rw---- 1 root audio 14, 3 2006-03-07 22:27 /dev/dsp0
(Ez az elsődleges hangkártyára mutató "karakteres eszközfájl".)
Illetve lehet "p" (cső eszköz, pipe):
bbt@bbt:~/12$ ls -l /dev/initctl prw------- 1 root root 0 2006-03-24 15:13 /dev/initctl
Igazából ezen eszközök kirészletezése még egy cikket igényelne, azonban olyan ritkán találkozik vele egy átlagos felhasználó, hogy pontos kirészletezésüktől eltekintenénk.
Számos érdekes különlegesség figyelhető meg egy Linuxos fájlrendszeren, különösen ha azt összevetjük egy Windows-os NTFS fájlrendszerrel, illetve jogosultságkezelő rendszerrel, azonban ennél mélyebben belemerülni a témába - különös tekintettel, hogy nem professzionális sorozatról van szó, úgy érezzük felesleges. Ezen információk jó része azonban igen fontos lehet a gyakorlati életben is, egy átlag felhasználó számára. Például, ha egy fájlt valamiért nem tudunk letörölni, vagy beleolvasni, első dolgunk legyen megnézni ki milyen jogosultsággal férhet hozzá.
| |