Práva na linuxe

Vzhľadom k tomu, že v návodoch na inštaláciu rôznych aplikácií v php (redakčné systémy, fotogalérie a pod.) narazíte na požiadavku nastavenia práv, je vhodné vedieť aspoň niečo o tom, čo vlastne nastavujeme.
 
Oprávnenie na serveri s linuxom má 3 úrovne: vlastník, skupina a ostatní. Je možné nastaviť práva čítania (skratka r), zápisu (w) a spúšťania (x). Cez Total Commander, napríklad môžete vidieť pri výbere vlastností súboru na FTP nasledujúci kód:
 
- rw- r-- r--
 
Prvá pomlčka znamená, že ide o obyčajný súbor (adresár tam má písmeno d). Prvá skupina popisuje práva vlastníka (v tomto prípade má právo r - čítať a w - zapisovať), druhá skupina práva skupiny (tu iba r - čítať) a posledná skupina sa týka ostatných (tu majú tiež oprávnenie r - čítať).
 
Práva sa tiež interpretujú číslami - zjednodušene povedané, získame potrebný kód súčtom hodnôt pre práva, ktoré potrebujeme nastaviť:
 
čítanie vlastníkom - 400 čítanie skupinou - 40 čítanie ostatnými - 4
zápis vlastníkom - 200 zápis skupinou - 20 zápis ostatnými - 2
spúšťanie vlastníkom - 100 spúšťanie skupinou - 10 spúšťanie ostatnými - 1
 
Potrebujeme, napríklad nastaviť, aby súbor mohol čítať a zapisovať doň iba užívateľ, ktorý sa prihlási cez FTP a nikto iný. Postupujeme teda: čítanie vlastníkom - hodnota 400, zápis vlastníkom - prirátame hodnotu 200, a to je všetko (skupina ani ostatní nemajú žiadne oprávnenia). Súčet je 600. Nastavíme teda práva cez "chmod 600".
 
Spätný rozklad je podobný - stovky označujú vlastníka, desiatky skupinu a jednotky ostatných. Keď od nás požadujú v návode nastaviť práva 666 zistíme, čo vlastne povoľujeme:
 
    vlastník: 600=400+200 ---> má práva čítania a zápisu
    skupina: 60=40+20     ---> má práva čítania a zápisu
    ostatný: 6=4+2            ---> má práva čítania a zápisu
 
 zhrnuté - tieto práva nastavujú možnosť čítať a zapisovať nielen vlastníkovi súboru a skupine (kam vlastník patrí), ale i "ostatným": čo je v našom prípade Apache (užívateľ, pod ktorým je spúšťaný php skript), ktorý potom do tohoto súboru môže zapisovať. V skutočnosti na webe nie sú nutné práva 666, ale len 646 - zapisovať môže iba FTP vlastník a ostatní.
 
Pre adresáre je to podobné - s tým rozdielom, že, aby bol pre daného užívateľa adresár prístupný, musí byť nastavené i právo spúšťania. Štandardne sú práva na adresári nastavené na 755 - pretože "vlastník" má plný prístup (700=400+200+100) a "skupina" čítanie+spúšťanie (40+10). To isté pre "ostatní" - do takéhoto adresára sa dostanete i cez web. (Čo keď nastavíme právo 700? Právo čítať, zapisovať a spúšťať má iba vlastník - ak ide o FTP usera, nedostaneme sa do tohto adresára cez prehliadač, ale iba cez FTP).
 
Keď chcete pri adresári i zápis cez php skript, bude potrebné nastaviť práva zápisu pre "ostatní" - skupiny ostatní sa "týkajú" jednotky - tzn. 6 (čítanie) + 2 (zápis) + 1 (spúšťanie - aby sa do adresára vôbec cez apache dostali) - zrátané 7. Práva sú teda 757 - čo korešponduje s odporúčaním v návode na nastavenie práv cez FTP.