Nastavení souborových práv na serveru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Phalanx
Člen | 310
+
0
-

Ahoj, nerozběhne se mi aplikace kvůli tomu, že se nevytváří soubory v temp/cache.
Nastavil jsem přístupová práva na 776 pro temp i log, ale to nestačilo, musel jsem nastavit i app + vendor na 777 abych se vůbec dostal k této chybě:

Nette\IOException: Unable to acquire exclusive lock on '/app/../temp/cache/Nette.Configurator/Container_7e2c9a3850.php.lock'

Nahrávám soubory přes FTP. Když se podívám na vlastníky, pak je skupina 1000 a vlastník 5000. Vůbec těmto rolím nerozumím, zdá se mi jakoby to měli na hostingu blbě nastavené.

Jediný webhosting, kde mám tento typ problému je Web4u.

Našel jsem diskuzi na podobné téma https://help.kdyby.org/question/?…
Bohužel nerozumím co bych měl jak nastavit.

Budu vděčný za jakékoliv rady.

Editoval Phalanx (14. 9. 2015 11:18)

h4kuna
Backer | 740
+
+1
-

776 znamená, pokud se ti liší skupina i vlastník pro ftp a apache, tak apache se do temp ani nepodívá tzn temp musí mít taky 777. Pak promázni temp.

h4kuna
Backer | 740
+
+1
-

Souborům defaultně dávej 644 a adresářům 755. Pokud potřebuje aplikace někde tvořit soubory (upload, cache…) tak nastav adresář na 777 soubory neřešíš. Kdyby jsi je potřeboval přes ftp smazat tak v aplikaci těmto adresářům nastav umask(0) ale opravdu cíleně.

<?php
$currentDir = getcwd();
foreach (array($logDir, $tempDir) as $dir) {
	chdir($dir);
	umask(0);
}
chdir($currentDir);
?>

A musí to makat úplně všude.

Nezapomeň, pokud máš temp a log ve veřejné části webu tak na servru zakázat, aby se do nich nikdo nedostal.

Phalanx
Člen | 310
+
0
-

Opravdu to pomohlo… Díky!

Dal jsem 776 kvůli tomu, že se bojím spuštění nějakého skriptu, který by si tam útočník mohl nakopírovat. To je ale jen moje domněnka – musel by asi mít přístup k ftp, protože nevím jak jinak by mohl soubory propašovat na server.

Phalanx
Člen | 310
+
0
-

Složky logs a temp mám veřejně, přístup omezuju přes htaccess

Order Allow,Deny
Deny from all

Mockrát díky za detailní popis.

Editoval Phalanx (14. 9. 2015 11:39)

hoou
Člen | 43
+
0
-

Mam rovnaky problem, tiez mi to vypisuje rovnaku chybu, ale nastavenim 777 pre temp a naslednym premazanim tejto zlozky sa nic nezmenilo. Skusal som aj ten trik s umask(0) a vypisal som si vysledok. Pri zlozke log mi to vratilo 0 a pri zlozke temp mi to vratilo 2. Podzlozky zlozky temp sa potom vytvaraju s pravami 750 a subory s pravami 640. Vedeli by ste mi niekto poradit?

Phalanx
Člen | 310
+
0
-

Mě se po změně na 777 vytvářejí podsložky 755 a soubory 644 i když jde o jiného uživatele.

Od podpory Web4U jsem zjistil následující:

Je to tím, že na vašich serverech se většinou ještě používá mod_php – tedy PHP běží v serveru Apache a potřebuje mít stejná práva jako web server. V tom případě si musíte vždy zajistit přímo z PHP, že si správně nastavíte masku přes umask a chmod, aby to šlo mazat i přes jiného uživatele ze serveru.

Je samozřejmě možné přehodit instalace na vašich serverech např. na php-fpm, které je výkonejší a kde je běžné, že běží PHP přímo pod uživatelem, bude to ale znamenat nějaké předělávky a bude potřeba vše důkladně otestovat.

Nedokážu říct, jestli Ti to pomůže.

hoou
Člen | 43
+
0
-

No tu sa jedna o Telekom. Dá sa vybrať medzi PHP 4, PHP 5 a MOD_PHP 5. PHP 4 som zatial ani neskusal, ale to mi asi najnovsie Nette ani nepojde nie? Bolo tam najskor nastavene PHP 5, ale to mi neslo kvoli tomu, ze funkcia ini_set() bola zablokovana. Na strankach pisu „Webové servery s označením MOD_PHP5 sú primárne určené pre web stránky vytvorené pomocou rôznych CMS systémov ako napr. Joomla, WordPress, Drupal, atď. Web stránky vytvorené pomocou CMS systémov sa zobrazujú častokrát rýchlejšie s využitím rôznych PHP akcelerátorov. ". Na tomto mi uz ini_set() islo, ale mam teraz tento problem, o ktorom sa tu bavime. Nakoniec som ale zistil, ked som skusil spustit RequirementsChecker, ze funkcia flock() je zablokovana. "Function flock() is not supported on this filesystem. Nette Framework requires this to process atomic file operations.“
Skusil som im napisat na podporu, ze ci sa s tym da nieco robit. Ak nie, tak asi bude potrebne prejst na iny webhosting. Btw robim stranku pre jednu firmu, kde uz ten Telekom mali zabehnuty, tak sa na tom snazim spojazdnit Nette. V zivote by som si tam webhosting nekupoval.

bo
Člen | 16
+
0
-

Cau, trosku off-topic, ale pokud server bezi na Linuxu a ma zapnuty selinux, je treba si se selinuxem pohrat.

Mi na Centos7 zabira kontext httpd_sys_rw_content_t (asi dost otevrene, ale co uz)

Pokud vam Nette nabehne s error 500 We're sorry, zkuste setenforce 0. Pokud potom Nette nabehne normalne, zmente selinux kontext.

Ja vim, selinux se na serverech moc v Enforcing nepouziva, ale kdyby nahodou.