Portál AbcLinuxu, 19. dubna 2024 21:34


Dotaz: Oddělení uživatelů v PHP - Proč?

7.9.2013 16:12 Jára
Oddělení uživatelů v PHP - Proč?
Přečteno: 462×
Odpovědět | Admin
Proč admini v php od sebe oddělujou jednotlivé usery? K čemu je takový nesmysl dobrý?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.9.2013 16:23 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Spýtam sa prečo sú poštové schránky oddelené pre jednotlivých prijemcov ? Chcel by si aby si každy mohol pod spoločným užívateľom meniť obsah stránky ?

Root v linuxe : "Root povedal, linux vykona."
7.9.2013 16:40 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Když je uživatel Franta a má adreář s právy franta:www-data tak jak může měnit adreář pepa:www-data, to je přece blbost..
7.9.2013 16:41 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Když je uživatel Franta a má adreář s právy franta:www-data tak jak může měnit obsah adresáře uživatele Pepa s právy adreáře pepa:www-data, to je přece blbost..
7.9.2013 17:06 DarkKnight | skóre: 26
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
a tohle tedy neodpovida "oddeleni uzivatelu"? mozna by bylo jeste vhodne zminit chroot a timpadem zamezeni cteni souboru jinych uzivatelu
7.9.2013 17:46 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Ne na úrovni PHP
8.9.2013 00:50 DarkKnight | skóre: 26
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
no a? oddeleni uzivatelu ciste v php neni mozne, jelikoz je php spoustene vzdy pod jednim uzivatelem... proto existuji mody php-fpm, ci php-itk, ktere vytvareji jednotliva vlakna pro konkretniho uzivatele systemu (a proto se oddeluji uzivatele pro php)
Jendа avatar 7.9.2013 18:32 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejspíš chceš nějak zařídit, aby jeden uživatel nemohl udělat fopen("/var/www/jinýweb/hesla.php"), ne?
Já to s tou denacifikací Slovenska myslel vážně.
7.9.2013 18:47 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Nechci, k čemu, veškerá oprávnění souborů jsou v Linuxu snad pro všechny stejná, nebo ne? Pokud nastavím složce vlastníka Pepa a skupinu www-data, tak co si php přečte?
Jakub Lucký avatar 7.9.2013 18:57 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Pokud PHP běží pod www-data, tak všechno, k čemu má www-data read práva...
If you understand, things are just as they are; if you do not understand, things are just as they are.
7.9.2013 19:06 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Souhlas, jinak by web nejel, ale cízi folder si stejně nepřečte... jelikož potřebuje znát full_path k tomu souboru který chce číst, a tu přece nezná... www-data cestu znají, ale U.B.Ladin ji nezná ani ji nijak nezjistí..
Jendа avatar 7.9.2013 19:39 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
jelikož potřebuje znát full_path k tomu souboru který chce číst, a tu přece nezná
Jsou třeba vidět v chybových hláškách. Nebo si ji může tipnout (bude to nejspíš adresář se jménem uživatele nebo jménem domény). Nebo si ten adresář může prostě vylistovat, ne? (případně exec("ls")).
Jakub Lucký avatar 7.9.2013 20:34 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
To je prostá security thru obscurity (což není bezpečné)

Dejme tomu, že můj web je na adrese /var/www/mojedomena.tld/www/

Použiju nějakou službu, která mi zjistí, jaké domény jsou na stejném webu (nebo se podívám, co je ve složce /var/www/)

Ejhle, je tady taky cizidomena.tld. Tak proč se nepodívat na soubor /var/www/mojedomena.tld/www/cizidomena.tld/index.php

Ejhle, includuje se tam ten a ten soubor...

Jakmile mám možnost číst, dostanu se ke všemu...
If you understand, things are just as they are; if you do not understand, things are just as they are.
Jakub Lucký avatar 7.9.2013 18:49 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
a protože open_basedir je flawed-by-design
If you understand, things are just as they are; if you do not understand, things are just as they are.
Jendа avatar 7.9.2013 19:42 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Mimochodem, jak se to teda správně dělá? Respektive jak to dělá takové ty běžné sdílené hostingy, kde si člověk za pár korun koupí prostor nebo je to dokonce free? To mají tolik uživatelů? A jak pak používají PHP? Pokud jako fastcgi, tak jim tam běží a žere paměť mnoho procesů (pro každého uživatele jeden), pokud přes cgi, tak se to zase furt forkuje, ne?
7.9.2013 19:50 Kit
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Takové hostingy většinou mají PHP jako modul Apache se zapnutým safe mode a nějakým vlastním hackem, který riziko zneužití ještě trochu sníží.
Max avatar 7.9.2013 20:08 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Bývalý klenot.cz myslím používal fastcgi a pak přešel na apache2 mpm peruser. Ale to už jsou léta, kdo ví, jak je to teď (koupila ho ta samá firma co station.cz).
Pokud jde třeba o ten station.cz, tak vývoj se tam asi zastavil a když jsem pro někoho ladil jedno cms, tak měli ve web rozhraní tlačítko na resetování práv a občas se prostě stalo, že se nějaká php aplikace nemohla dostat k nějakému souboru. Osobně si tedy myslím, že v té době asi ok, ale ta doba tu byla asi tak přes 10 lety.
Zdar Max
Měl jsem sen ... :(
Max avatar 7.9.2013 20:01 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Pro jednoho ISP provozuji menší hosting a budu psát i na toto téma ze své zkušenosti.
Jinak to jede na fastcgi+suexec+eaccelerator + hafo poladění bokem a musím říci, že výsledek se mi líbí. Je to ovšem obstarožní 32bit železo a v současné době navrhuji nový hosting a migraci.
Upřímně řečeno, současné nastavení a použité vybavení je prostě takové, které v té době bylo k dispozici (server je skutečně stařík). Doba však pokročila a jsme zase někde jinde. Nově tedy plánuji (opět vše opensource):
mail : postfix+ldap+dovecot+roundcube
groupware : SOGo (bude běžet nad tím), takže kalendáře, kontakty apod.
mysql : mariadb
ftp/ftps/sftp : proftpd (ano, nespletl jsem se, umí i sftp)
ssh : samozřejmostí
Dále v současné době provozuji na zmíněném serveru git i svn a to ponechám, jen se to přidá k hostingu pro každého.
Teď ještě musím otestovat sambu4, zda jí mám nasadit, nebo ne (kvůli nativní komunikaci SOGo+outlook).
Články na toto téma plánuji, teď dopisuji jiné články a výše zmíněné ještě ani moc netestuji.
Zdar Max
Měl jsem sen ... :(
Jendа avatar 7.9.2013 20:10 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Jinak to jede na fastcgi+suexec+eaccelerator
A to nové taky pojede na fastcgi? To musíš mít tolik fastcgi procesů jako uživatelů (nebo ještě lépe třikrát víc)? Ptal jsem se na hostingy, kde je na jednom stroji webů klidně tisíc.
7.9.2013 20:14 Kit
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Proto je tam ten suexec, aby jich nemuselo být tolik.
Max avatar 7.9.2013 20:27 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Psal jsem, že toto je technoligie stará hafo let (v mém případě asi 6 let). Bezpečně to tenkrát jinak nešlo a v konečném důsledku to není taková tragédie, jak naznačuješ. Samozřejmě to své režije má, ale nepřeháněl bych.
Dnes tu máme mpm-itk, zmíněný mpm peruser už potichu zaniká.
Nicméně fastcgi má jednu výhodu oproti těm dvoum zmíněným. Je to wraper a tak není problém dát jednomu uživateli php4, jinému php5, jinému php5.4 atd.
Zatím testuji a zvažuji možnosti. Jednou z nich je i možná kombinace itk a fastcgi. Problém u fastcgi je totiž zase v tom, že pod jiným userem běží jen php, ale statický web nikoli, což je ošklivý kaz na kráse.
Ve výsledku by tedy jejich kombinace nemusela být špatným řešením pro co největší univerzálenost a variabilitu.
Jak jsem řekl, jasno v tom na 100% nemám, musím ještě dotestovat a podle toho se rozhodnu.
Zdar Max
Měl jsem sen ... :(
Max avatar 7.9.2013 20:29 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Jinak myslím, že by jsi se divil, kolik ten server zvládá domén, návštěvnost a mailů apod.
Zdar Max
Měl jsem sen ... :(
Jakub Lucký avatar 7.9.2013 20:41 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
My jsme to na starém PHP (5.3) řešilo přes FCGI, suexec a drobný cgiwrapper. na PHP 5.4 se to řeší přes FPM

Nevýhoda tohohle řešení je jak popisuješ, každý uživatel má jeden proces zvlášť. My ale obvykle máme lidi,co mají 2-5 webů najednou, takže jim stačí jeden proces dohromady

Existuje ještě řešení mpm-itk, to jsem nezkoušel, a suPHP, ale to jsem experimentálně prokázal jako nejpomalejší (řádově) ze všech...
If you understand, things are just as they are; if you do not understand, things are just as they are.
7.9.2013 19:37 Jára
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Nejspíš chceš nějak zařídit, aby jeden uživatel nemohl udělat fopen("/var/www/jinýweb/hesla.php"), ne?
Pokud máš správně nastavené oprávnění jednotlivých souboru a složek, tak název této složky 'jinýweb' nezjistíš.. nebo se pletu?
7.9.2013 19:45 Kit
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Záleží na tom, jestli PHP jede v Apache jako modul (pak to jde) nebo přes FastCGI (pak to funguje jak popisuješ).
Max avatar 7.9.2013 19:49 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč?
Jednak kvůli tomu, že obezličky pro omezení pohybu php v adresářové struktuře jsou jaksi nespolehlivé (jednak kvůli omezením v php, s čímž může být problém u php aplikací, ale hlavně, když se objeví nějaká díra, tak má hned kdokoli přístup kamkoli).
Dále kvůli tomu, aby se daly nějak řešit kvóty na diskovém uložišti. Jak jinak by jsi chtěl kontrolovat zaplnění místa pro jednotlivé domény a hlídat si kvóty?
Dále je tu možnost rozvíjet další služby, které budou vázány na diskové uložiště, ale třeba už nebudou mít v sobě možnost chrootu apod. Takže i z hlediska budoucího rozvoje by jsi měl vše stavět univerzálně.

Až budeš provozovat něco podobného, tak dojdeš k několika věcem :
1) nekomplikovat si život a řešit vše maximálně systémově/univerzálně bez obezliček (dřív to tak bohužel nešlo, ale současný stav to již umožňuje), čímž se vyvaruješ budoucím problémům
2) uživatele ověřovat buď systémově, nebo přes LDAP, nikdy pro nic většího nepoužívat k ověřování mysql
Zdar Max
Měl jsem sen ... :(
7.9.2013 19:53 Kit
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
LDAP je vlastně také systémové ověřování uživatelů. Dokonce bych řekl, že je to nejrychlejší varianta ze všech dostupných.
Max avatar 7.9.2013 20:10 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Oddělení uživatelů v PHP - Proč?
Ahoj,
v konečném důsledku je všechno systémové ověřování. Třeba i ty uživatele lze mít v mysql, viz libpam-mysql :)
Zdar Max
Měl jsem sen ... :(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.