Práva na linuxu

Vzhledem k tomu, že v návodech na instalaci různých aplikací v php (redakční systémy, fotogalerie apod.) narazíte na požadavek nastavení práv je vhodné vědět alespoň něco málo o tom, co vlastně nastavujeme.
 
Oprávnění na serveru s linuxem má 3 úrovně: vlastník, skupina a ostatní. Lze nastavit práva čtení (zkratka r) zápisu (w) a spouštění (x). přes Total Comamnder například můžete vidět při výběru vlastností souboru na FTP následující kód:

- rw- r-- r--

První pomlčka znamená, že se jedná o obyčejný soubor (adresář tam má písmeno d). První skupina popisuje práva vlastníka (v tomto případě má právo r - číst a w - zapisovat), druhá skupina práva skupiny (zde pouze r - číst) a poslední skupina se týká ostatních (zde mají také oprávnění r - číst)

Práva se též interpretují čísly - zjednodušeně řečeno získáme potřebný kód součtem hodnot pro práva co potřebujeme nastavit:
 
čtení vlastníkem - 400 čtení skupinou - 40 čtení ostatními - 4
zápis vlastníkem - 200 zápis skupinou - 20 zápis ostaními - 2
spouštění vlastníkem - 100 spouštění vlastníkem - 10 spouštění ostatními - 1

Potřebujeme například nastavit, aby soubor mohl číst a zapisovat do něj pouze uživatel co se přihlásí přes FTP a nikdo jiný. Postupujeme tedy: čtení vlastníkem - hodnota 400, zápis vlastníkem - přičteme hodnotu 200 a to je vše (skupina ani ostatní nemají žádná oprávnění). Součet je 600. Nastavíme tedy práva přes "chmod 600"


Zpětný rozklad je podobný - stovky označují vlastníka, desítky skupinu a jednotky ostatní. Když od nás požadují v návodu nastavit práva 666 zjistíme si, co vlastně povolujeme:
 
vlastník: 600=400+200 ---> má práva čtení a zápisu
skupina: 60=40+20 ---> má práva čtení a zápisu
ostatní: 6=4+2 ---> má práva čtení a zápisu

shrnuto - tato práva nastavují možnost číst a zapisovat nejen vlastníkovi souboru a skupině (kam vlastník patří), ale i "ostatním": což je v našem případě Apache (uživatel pod kterým je spouštěn php skript), který tak do tohoto souboru může zapisovat. Ve skutečnosti na webu nejsou nutná práva 666 ale jen 646 - zapisovat může pouze FTP vlastník a ostatní.
 
Pro adresáře je to podobné - s tím rozdílem, že aby byl pro daného uživatele adresář přístupný, musí být nastaveno i právo spouštění. Standardně jsou práva na adresáře nastavena na 755 - neboli "vlastník" má plný přístup (700=400+200+100) a "skupina" čtení+spouštění (40+10). To samé pro "ostatní" - do takového adresáře se dostanete i přes web. (Co když nastavíme právo 700? číst, zapisovat a spouštět má pouze vlastník - pokud jde o FTP usera, nedostaneme se do tohoto adresáře přes prohlížeč ale pouze přes FTP)

Když chcete u adresáře i zápis přes php skript, bude nutné nastavit práva zápisu pro "ostatní" - skupiny ostatní se "týkají" jednotky - tzn: 6 (čtení) + 2 (zápis) + 1 (spouštění - abychom se do adresáře vůbec přes apache dostali) - sečteno 7. Práva jsou tedy 757 - což koresponduje s doporučením v návodu na nastavení práv přes FTP