Autor Zpráva
Jcas
Profil
Asi to budou začátečnícké otázky, ale prosím o vysvětlení. Jde mi o práva
script.php vytvoří dir ve stejné složce, ve které je tento samotný script.php a do nej vloži sub-dir.
mkdir('./'.$userdir, prava);
mkdir('./'.$userdir.'/foto');

1. Kdo je vlastník a kdo je skupina? Všechny soubory a adresáře na serveru (pro můj web) patří jednomu vlastníku? Je jedno jestli je nahrávám přes ftp, nebo je vytvoří php script? Kterýkoliv phpscript na mém webu bude ke složce přistupovat jako vlastník?

2. Právo spouštění se vztahuje pouze na? Abych vlezl do dir a procházel jím, tak ho spouštím, nebo čtu? soubor.php je spouštěn, nebo čten (když budou v $userdir soubory.php) ?

3. Dědí se práva? Práva adresáře se zdědí pro soubory v něm, nebo pro subdir v něm?

4. A co soubor.html. Když ho prohlíží prohlížeč, tak soubor musí mít čtení povoleno pro všechny?

To jsou otázky abych to pochopil. V podstatě jde pouze o to, jak nastavit práva. (systém 1+2+4 chápu)
$userdir - složky+soubory.php+soubory.html (zapisovat: pouze moje php scripty, číst: moje scripty a prohlížeče, spuštet: pouze na webu moje phpscripty)
$userdir/foto - pouze fotky. (prohlížet: všichni, zapisovat: pouze jeden můj php soubor-upload foto, spouštět: nikdo)
xROAL
Profil
Jcas:
1. Kdo je vlastník a kdo je skupina? Všechny soubory a adresáře na serveru (pro můj web) patří jednomu vlastníku? Je jedno jestli je nahrávám přes ftp, nebo je vytvoří php script? Kterýkoliv phpscript na mém webu bude ke složce přistupovat jako vlastník?
PHP beží pod užívateľom www-data, skupina www-data. Vlastník akéhokoľvek súboru vytvoreného cez PHP teda bude www-data.

Ak sa na FTP prihlasuješ ako užívateľ jcas, vlastník vytvorených súborov bude jcas.

PHP (a Apache/nginx) bude k súborom a zložkám pristupovať ako užívateľ, pod ktorým beží, čiže, vyššie spomenuté www-data.

Default nastavenia, webhostingy to môžu (a pravdepodobne majú) mať nastavené inak.

2. Právo spouštění se vztahuje pouze na? Abych vlezl do dir a procházel jím, tak ho spouštím, nebo čtu? soubor.php je spouštěn, nebo čten (když budou v $userdir soubory.php) ?
Executable bit označuje súbor (script) ktorý je možné priamo spustiť, napr:
~/test.php:
#!/usr/bin/php
<?php
  echo 'executable';
Následne v príkazovom riadku:
chmod +x test.php
./test.php
Výsledok bude text executable.

Môžeme odstrániť prvý riadok ("shebang"), odobrať executable bit (chmod -x test.php) a script spustiť cez PHP (php test.php) - výsledok bude rovnaký. PHP súbory potrebuje len čítať.

Čo sa týka zložiek, tam je to trošku inak ako pri bežných súboroch.
Predstav si zložku ako zoznam súborov, ktoré obsahuje. Read umožňuje čítať tento zoznam, write umožňuje do zoznamu pridávať, upravovať, či mazať z neho, avšak aby si v zložke reálne niečo spravil, musíš mať právo do nej vstúpiť - to je execute.
(Ak ti nerobí problém angličtina, tu je stručné vysvetlenie s dvoma zaujímavými príkladmi unix.stackexchange.com/a/21263.)

3. Dědí se práva? Práva adresáře se zdědí pro soubory v něm, nebo pro subdir v něm?
Nie, práva sa nededia. Môžeš mať zložku A, v nej zložku B. K A nemáš práva na čítanie/zápis, ak však máš práva na čítanie/zápis B, tak v tejto zložke môžeš súbory vytvárať a upravovať. Pozor však na to, že ak nemáš právo "spustiť" (execute) zložku A, tak zložku B nebudeš schopný vidieť a teda sa k nej nedostaneš.

4. A co soubor.html. Když ho prohlíží prohlížeč, tak soubor musí mít čtení povoleno pro všechny?
Prehliadač neotvára priamo súbor, to robí webový server (Apache/nginx) - iba ten potrebuje súbor vedieť prečítať, aby sa zobrazil návštevníkovi.
Jcas
Profil
Děkuji.
Velice pěkně jste to popsal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: