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