Open-basedir mi udělá jen stránku typu mujsite.com/~user. shell_exec('whoami') v php vrací www-data (mám ubuntu 18). Funguje nastavení APACHE_RUN_USER v /etc/apache2/envvars, ale to je globální.
Zkouším nějaké návody na SuexecUserGroup a fast cgi a nedaří se mi to udělat. Znáte někdo příklad funkčního nastavení pro nějaký VirtualHost? Chci mít pro každý virtualhost jiného usera, pod kterým pojede jeho php skript.
Je to poměrně dost nastavování, ale jde to.
Nejprve si nainstalujete třeba nginx jako reverzní proxy. Založíte uživatele pro běh proxy a nastavíte, aby pod ním běžel nginx. Osobně doporučuju udělat si na to extra instanci, protože pak se nestane, že si s aktualizací přepíšete něco v /etc/nginx.
Pak založit uživatele pro instanci php-fpm, uživatele pro apache té instance a uživatele, který bude nahrávat soubory.
Apache (v rámci systemd) založit novou instanci, tu nechat naslouchat na 127.0.0.1 a nějakém portu. Celého apache nechat běžet pod extra uživatelem, kterého jste založil (viz odstavec výše).
Na nginx proxy nastavit, který FQDN se mají přesměrovat na 127.0.0.1:port.
V php-fpm nastavit nový pool, který poběží pod uživatelem, kterého jste založil (viz výše).
Tím máte hotové odělení práv od sebe. V tento moment začnete budovat práva mezi sebou, aby jednotlivé části směly vůči sobě to, co chcete. Tím je obvykle přidávání ACL, aby např. apache mohl ke statickým souborům webu, aby php-fpm mělo read-only přístup do aplikace samotné a zápis jen do složek, kam se ukládají provozní data, tempy, ...
Je to poměrně hodně práce a neexistuje na to kuchařka.
Jako první tip: naučte se spouštět více instancí Apache (přes systemd), a naučte se spouštět více instancí PHP-FPM (přes pooly v php-fpmd) a přiřaďte jim extra uživatele (systémové, bez možnosti loginu, bez home, ...) a extra skupiny.