Fájljogosultságok (chmod, chown) Linuxon egyszerűen elmagyarázva

Linux 3 perc olvasás

Linuxon minden fájlhoz és könyvtárhoz jogosultságok tartoznak, amelyek meghatározzák, ki olvashatja, írhatja vagy futtathatja. A helytelen beállítás kétféle hibát okoz: túl szigorú jogoknál a webszerver nem tudja olvasni a fájlokat (403-as hiba) vagy a weboldal nem tud feltölteni, túl megengedő jogoknál pedig egy feltört szkript vagy egy másik felhasználó módosíthatja őket.

A jogosultságok három szintje

Minden fájlhoz három jogosultsági kategória tartozik:

  • Tulajdonos (owner, u): a fájlt létrehozó vagy hozzá rendelt felhasználó.
  • Csoport (group, g): a fájlhoz rendelt felhasználói csoport tagjai.
  • Egyéb (others, o): mindenki más a rendszeren.

A jogosultságok típusai

Mindegyik kategóriához háromféle jog tartozhat:

Jog Fájlnál Könyvtárnál Érték
r (read) a tartalom olvasása a tartalom listázása 4
w (write) a tartalom módosítása fájlok létrehozása, törlése, átnevezése 2
x (execute) futtatás programként belépés a könyvtárba 1

Az ls -l kimenetében a jogosultságok például így jelennek meg: -rwxr-xr--. Az első karakter a típus (- fájl, d könyvtár, l szimbolikus link), az utána következő kilenc karakter hármas csoportokban a tulajdonos, a csoport és az egyéb felhasználók jogait mutatja. Ugyanitt látszik a tulajdonos és a csoport neve is. AlmaLinuxon és Rocky Linuxon a jogok után egy pont is áll (-rw-r--r--.): ez azt jelzi, hogy a fájlnak SELinux-címkéje van, a jogosultságokhoz nem tartozik. A címkét az ls -Z mutatja (lásd: SELinux: miért kapok „Permission denied” hibát?).

Jogosultságok módosítása: chmod

Számokkal

A számos formában a három kategória jogait egy-egy számjegy írja le, amely az r, w és x értékének összege:

chmod 755 mappa
chmod 644 index.php

A 755 a tulajdonosnak teljes jogot (rwx = 4+2+1 = 7), a csoportnak és mindenki másnak olvasási és futtatási jogot (r-x = 4+1 = 5) ad. A 644 a tulajdonosnak olvasást és írást (rw- = 6), a többieknek csak olvasást (r– = 4) enged.

Betűkkel

A betűs forma a meglévő jogokat módosítja:

chmod u+x szkript.sh     # a tulajdonos futtathatja
chmod go-w config.php    # a csoport és mások írási jogának elvétele
chmod o= titkos.txt      # mások semmilyen jogot nem kapnak

Ajánlott beállítások weboldalakhoz

Weboldalaknál a könyvtáraknak általában 755, a fájloknak 644 jogosultság a megfelelő. Az érzékeny konfigurációs fájlok (például a wp-config.php) lehetnek szigorúbbak is (640 vagy 600), ha a webszerver a tulajdonos nevében fut. Egy teljes könyvtárfa beállítása:

find /var/www/oldal -type d -exec chmod 755 {} \;
find /var/www/oldal -type f -exec chmod 644 {} \;

Ne használja a chmod -R 755 parancsot a teljes fára, mert az a fájlokat is futtathatóvá teszi: a teszten egy .php fájl ettől -rwxr-xr-x lett, a fenti find … -type f … 644 parancs után ismét -rw-r--r--. Sok fájlnál a {} + végződés gyorsabb (find /var/www/oldal -type f -exec chmod 644 {} +), mert a chmod egyszerre több fájlt kap.

Tulajdonos módosítása: chown

A chown a fájl vagy könyvtár tulajdonosát és csoportját módosítja. Ehhez root vagy sudo jogosultság kell:

sudo chown felhasznalo:csoport fajlnev
sudo chown -R www-data:www-data /var/www/oldal

A -R kapcsoló rekurzívan, a teljes könyvtárfára alkalmazza. A webszerver felhasználója disztribúciónként eltér: Debianon és Ubuntun www-data, AlmaLinuxon és Rocky Linuxon apache vagy nginx. Ha csak a csoportot módosítaná, a chgrp parancsot is használhatja.

Miért kerülje a 777-et?

A 777 mindenki számára teljes írási jogot ad. Egy hibás jogosultsági beállítás gyors „javításaként” gyakran előkerül, de ezzel bármelyik folyamat módosíthatja vagy kártékony kódra cserélheti a fájlokat. cPanel tárhelyen a PHP jellemzően a fiók saját felhasználójaként fut, ezért ott a 755/644 bőven elég. A jogosultságok a cPanel Fájlkezelőjében is módosíthatók, lásd: Fájlok kezelése cPanel tárhelyen. Saját VPS-en mindig a szükséges legkisebb jogosultságot adja meg.

Vissza: Linux leírások (62)