PHP - Dovoljenja za datoteke

PHP - Dovoljenja za datoteke

Avtor: Dani Sajtl

Uvod

  • Dovoljenja datotečnega sistema določajo kaj lahko posamezni uporabniki naredijo z določeno datoteko ali mapo v datotečnem sistemu.
  • Npr., kjer ima en uporabnik dovoljenje za branje in pisanje v datoteko, ima drugi samo dovoljenje za branje, tretji pa lahko še tega nima.
  • Dovoljenja načeloma ne bodo veliko vplivala na pisanje PHP skript, ker PHP v ozadju poskrbi za pravilne nastavitve.
  • Npr., če ustvarimo novo datoteko za pisanje, PHP avtomatsko dodeli tej datoteki dovoljenja za branje in pisanje za uporabnika, ki poganja našo PHP skripto (ponavadi je ta uporabnik spletni strežnik).
  • Pri ustvarjanju nove mape, PHP dodeli tej mapi dovoljenja za branje, pisanje in izvajanje privzeto za vse uporabnike – se pravi, da lahko kdorkoli ustvarja in briše datoteke znotraj te mape.

Spreminjanje dovoljenj

  • PHP funkcija chmod() se uporablja za spreminjanje načina ali dovoljenj datoteke ali mape. Deluje podobno kot UNIX-ov ukaz chmod .
  • Za spreminjanje dovoljenja za datoteko s chmod() podamo funkciji ime datoteke in nov način dostopa.
  • Npr., za nastavitev načina na 644 uporabimo:

    • chmod("datoteka.txt", 0644);
    • 0 (nula) pred 644 je pomembna, ker potem PHP interpretira število v osmiškem številčnem sistemu
    • chmod() vrne true , če je bila sprememba dovoljenj uspešna oz. false če ne (npr. nismo lastnik datoteke).

Načini za datoteke

  • Načini za datoteke so običajno izraženi kot osmiško število sestavljeno iz treh števk.

    • Prva števka določa, kaj lahko lastnik datoteke (običajno uporabnik, ki ustvari datoteko) dela z datoteko.
    • Druga števka določa, kaj lahko uporabniki v datotečni skupini (običajno je to skupina uporabnika, ki je ustvaril datoteko) naredi z datoteko.
    • Tretja števka pa določa kaj lahko vsi ostali počnejo z datoteko.
  • Vrednost posamezne števke predstavlja dovoljenje za dostop za določenega uporabnika oz. skupino:

    (nacini_za_datoteke.png)

Primeri

  • Nekaj primerov za lažje razumevanje:

    • Lastnik lahko bere in piše v datoteko; vsi ostali jo lahko samo berejo:

      chmod("datoteka.txt", 0644);
    • Vsi lahko berejo in pišejo v datoteko:

      chmod("datoteka.txt", 0666);
    • Vsi lahko berejo in izvajajo datoteko, vendar lahko samo lastnik zapisuje v njo:

      chmod("datoteka.txt", 0755);
    • Samo lastnik lahko bere in piše v datoteko:

      chmod("datoteka.txt", 0600);
  • Dovoljenje datoteki ali mapi lahko spremenimo samo, če smo lastnik te datoteke ali mape!

Kako ti načini delujejo z mapami

  • Za branje datotek v mapi potrebujemo dovoljenje za branje in izvajanje na tej mapi.
  • Za ustvarjanje in brisanje datotek in podmap znotraj mape potrebujemo dovoljenje za pisanje in izvajanje na tej mapi.

Preverjanje dovoljenj

  • Preden nekaj naredimo z datoteko v skripti je koristno vedeti, kaj lahko naša skripta naredi z datoteko. PHP nam pri tem zagotavlja tri funkcije:

    • is_readable() – preverimo ali lahko preberemo datoteko
    • is_writable() – preverimo ali lahko pišemo v datoteko
    • is_executable() – preverimo ali lahko izvedemo datoteko
  • Vsaka funkcija kot argument sprejme ime datoteke in lahko vrne true , če je operacija dovoljena in false , če ne.
  • Primeri:

    • if (is_readable("test.txt") {
          echo "Datoteko test.txt lahko preberem.";
        }
    • if (is_writable("test.txt") {
          echo "V datoteko test.txt lahko pišem.";
        }
    • if (is_executable("test.txt") {
          echo "Datoteko test.txt lahko izvedem.";
        }
 

Za radovedne
Uporabimo lahko tudi funkcijo fileperms() , ki vrne Integer – predstavlja postavljena dovoljenja na datoteki ali mapi. Npr. za izpis osmiške vrednosti postavljenih dovoljenj na datoteki uporabimo:

echo substr(sprintf("%o",fileperms("datoteka. txt")), -4);

http://php.net/manual/en/function.fileperms.php

0%
0%