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

Tartalomjegyzék
File és könyvtár jogok
Alapvető UNIX fájlmű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