Autor Zpráva
pepak
Profil
Prosím, dokázal by mě někdo nasměrovat na článek, který by se zabýval provozem Apache (s PHP jako modulem) ve víceuživatelském prostředí? Chtěl bych dosáhnout něčeho podobného, jako umí webhostingy:

1) Různí uživatelé serveru mají různé části webového stromu, do kterých si nemohou vzájemně lézt.

2) Když jako uživatel X něco nahraju (např. přes SFTP) do své části webového stromu, tak to Apache uvidí a bude s tím moci pracovat, a naopak, když Apache vytvoří nový soubor v mé části stromu, tak s ním budu moci pracovat já.

Připadá mi, že nejjistěji se k takovému výsledku dá dostat tak, že pro každý virtualhost je samostatný proces běžící pod jiným uživatelem - pod tím uživatelem, který bude používat i to SFTP. Ve výsledku pak Apache i uživatel používají stejné UID, tím pádem je jedno, jak soubor vznikne, protože vždycky bude mít stejného vlastníka a není problém mu pomocí UMASK nastavit oprávnění na 600.

Ale netuším, jak to reálně udělat. Nejblíže jsem se dostal k mpm-itk.sesse.net, ale to se zdá být hodně staré a už neudržované, což mi přijde jako docela problém. Zvlášť s ohledem na to, že "Since mpm-itk has to be able to setuid(), it runs as root".

Ale netrvám na tomto konkrétním přístupu, potřebuju dosáhnout cíle, ale je mi celkem jedno, jaká cesta pro jeho dosažení bude použitá. V zásadě se obejdu i bez bodu 1, pokud to bude nutné, i když bych ho velice rád dodržel.

Cílová platforma je FreeBSD, pokud je to důležité.
N71
Profil *
Takto poctivě to konvenční hostingy žel většinou neřeší. Typicky Apache i PHP běží pod účtem www-data:www-data. Uživatelé pak jsou ve stejné skupině, například pepa:www-data. Pro přístup k sftp jsou omezeni na svůj virtual-host adresář (ChrootDirectory).

V PHP pak mají definovanou konfiguraci pro tento adresář s vlastními hodnotami open_basedir, upload_tmp_dir, session.save_path a podobně, aby nebylo možné zasahovat do cizích dat. Pakliže PHP používá vhodný umask (0002), tak má uživatel pepa přístup ke všem svým souborům na sftp a zároveň může omezit zápis vybraným souborům odebráním patřičných práv. Sahat na data kolegů mu brání chroot a open_basedir. S pomocí boží.

Pokud se někde nevyskytne nějaký exploit, tak tohle většinou stačí. Aplikaci s vyššími bezpečnostními požadavky ale v takové veřejné králikárně provozovat spíš nejde. Aspoň víš, proč vznikly kontejnery a virtualizace.
Davex
Profil
pepak:
Je nutné použítí PHP jako Apache modulu? Dnes už se místo toho používá PHP-FPM s pooly běžícími pod různými uživateli.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0