Fejezet 2. File és könyvtár jogok, filemûveletek

File és könyvtár jogok

Bevezetés

A UNIX egyik hasznos tulajdonsága, hogy minden fájl és könyvtár ún. jogokkal rendelkezik. Ezek meghatározzák, hogy mely felhasználók olvashatják, írhatják és futtathatják a fájlt (amennyiben az egy program). Minden fájlhoz tartozik egy tulajdonos és egy csoport.

A csoport az, amit maga a szó is elárul: a felhasználók egy csoportja. Például egy iskolai számítógép rendszergazdája dönthet úgy, hogy a diákokat és a tanárokat berakja egy diak és egy tanar csoportba, ezáltal megkönnyítve az adminisztrációt. Ezután, ha úgy dönt hogy a dolgozatok könyvtárat csak a tanárok érhessék el, elég egy apró változtatást végrehajtania. A csoportok célja elsõsorban az adminisztració egyszerûbbé tétele. Egy felhasználó egyszerre több csoportnak is tagja lehet.

Fájl jogok

Egy fájlhoz tartozó jogokat az ls -l paranccsal nézhetjük meg[1]:
$ ls -l
-rw-r-----   1 tpapp    tanar        1516 Oct 15 16:38 hazifeladat
-rwxr-xr-x   1 tpapp    tpapp          42 Oct 11 19:45 helloworld
$
Tipp: Ha csak egy vagy néhány fájlt szerenténk kiíratni, írjuk õket az ls parancs után, pl. ls -l hazifeladat.
Az ls -l parancs kiírja az elsõ oszlopba a jogokat, a harmadikba és a negyedikbe a tulajdonos felhasználót és a csoportot, az utolsóba pedig a fájl nevét[2]. A jogok értelmezése a következõ:
    az elsõ karakter megadja a fájl típusát

    a következõ három a tulajdonos jogait

    a következõ három a csoport jogait

    az utolsó három a többi felhasználó jogait

Ha az elsõ karakter -, akkor közönséges fájlról van szó, ahogy az a fenti példában is látszik. A hárombetûs csoportok betûi rendre
    r - a fájl olvasható (read)

    w - a fájl irható (write), azaz lehet módosítani, bõvíteni, törölni belõle, stb.

    x - közönséges fájl esetén azt jelenti, hogy a fájl futtatható

A fenti példában ez azt jelenti hogy a hazifeladat fájlt a tulajdonos, tpapp írhatja és olvashatja, bármelyik, tanar csoportba tartozó felhasználó olvashatja, de nem írhatja, a többiek pedig se nem olvashatják, se nem írhatják - a fájl tartalma számukra hozzáférhetetlen.

A helloworld annyiban különbözik a hazifeladat-tól, hogy a hozzátartozó csoport és tulajdonos azonos. Ez gyakori az olyan esetekben mikor a tulajdonos nem akar egy csoportnak sem speciális jogokat biztosítani. A fájlt csak a tulajdonos írhatja, de bárki olvashatja es futtathatja.

Könyvtár jogok

A könyvtárak jogainak értelmezése nagymértékben hasonló a fájlok jogaihoz. Próbáljuk meg kiíratni a /var könyvtár jogait:
$ ls -l /var
total 16
drwxr-xr-x   2 root     root         1024 Aug 23 22:44 backups
drwxr-xr-x   4 root     root         1024 Sep  5 20:20 cache
drwxr-xr-x  12 man      root         1024 Sep  9 16:01 catman
drwxr-xr-x  13 root     root         1024 Aug 10 06:47 lib
drwxrwsr-x   2 root     staff        1024 Apr 26 06:34 local
drwxrwxrwt   2 root     root         1024 Apr 26 06:34 lock
drwxr-xr-x   5 root     root         1024 Sep 26 06:44 log
drwxr-xr-x   2 root     root         1024 Oct 15 16:20 run
drwxr-xr-x  11 root     root         1024 Jun 13 03:42 spool
drwxr-xr-x   3 root     root         1024 Jul  5 05:19 state
drwxrwxrwt   3 root     root         1024 Oct 14 17:15 tmp
drwxr-xr-x   2 root     root         4096 Aug 21 07:31 ttfonts
drwxrwxrwx   2 root     www-data     1024 Sep  5 21:09 www
$
Mit rontottunk el? A parancs nem magát a könyvtárat, hanem annak tartalmát listázta ki. Ez a parancs szokásos viselkedése, ami megkönnyíti az aktuális könyvtártól eltérõ könyvtárak kilistázását. A -d kapcsoló kikapcsolja ezt a lehetõséget, és így magát a könyvtárat látjuk, nem a tartalmát. A kapcsolók egymásután írhatók.
$ ls -ld /var
drwxr-xr-x  15 root     root         1024 Aug 16 06:20 /var
$
A könyvtárak típusát a d betû jelöli. Az r és w betûk itt arra vonatkoznak, hogy lehet-e a könyvtár tartalmát olvasni és írni, az x pedig arra hogy lehet-e a könyvtárban keresni, azaz kilistázni, hogy milyen fájlokat tartalmaz.

A home könyvtár

Minden felhasználónak van egy úgynevezett home[3] könyvtára, amiben a saját dolgait tárolhatja. A home könyvtárat általában más felhasználók nem olvashatják, csak a tulajdonosnak van joga írni és olvasni. A home könyvtár a /home alkönyvtára, általában a felhasználó neve, pl. a tpapp felhasználó home könyvtára /home/tpapp. A legelterjedtebb shellek a ~[4] jel helyére behelyettesítik a felhasználó home könyvtárát:
$ cd ~
$ pwd
/home/tpapp
$

Megjegyzések

[1] az -l egy ún. kapcsoló. A kapcsolókkal részletesebben az X fejezetben ismerkedünk meg, egyelõre elég annyit tudni róluk hogy a parancs viselkedését módosítjak.
[2] a többi oszlop: hardlinkek száma, fájl mérete, utolsó módosítás dátuma és idõpontja.
[3] a szó jelentése ''otthon''
[4] a billentyûzet bal felsõ sarkában, az 1 mellett van