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.
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.
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.
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 $
| [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 |