Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem apache webserver, multi-site, multi-user, linux

Ahoj,

mám takový malý soukromý neziskový hosting, vlastně pro sebe a skautské středisko a pár jiný zpřátelených webů. Uživatelům to stačí, ale setkávám se v poslední době čím dál častěji s obtížemi ohledně práv.

Prává mám v současné době nastavená takto:

Uživatel - <uživatelské jméno>:<www-pub>, adresář /var/users/<uživatelské jméno> a bash je sftp, tedy pouze datový přístup

Apache běží pod uživatelem www-data se skupinou také www-pub

V uživatelském adresáři je adresář ./www, a v něm jednotlivé weby, které spravuje. Ty jsou pak linkované do společného adresáře /var/www, kde také pro ně sahá apache.

Každý adresář www i jeho obsah má masku 2775, aby uživatel i webserver mohl cokoli měnit a přisupovat. Ta dvojka na začátku zajistí zdědění GUID v případě vytváření jakéhokoli obsahu v adresáři.

Takhle to jakž takž funguje, potíž je v souborech vytvořených samotným webem. Ty se totiž vytvoží s maskou 2755, tudíž s nimi přihlášený uživatel nemůže pracovat. Není to nic zásadního, spíš je to otravné na vyžádání upravovat práva. Když jsem se tak probíral různými řešeními, narazil jsem i na otázku bezpečnosti, s touto maskou a uživatelskými právy vlastně může uživatel pomocí PHP skryptu sáhnout do adresáře i který mu přímo nepatří a nevidí do něj.

Ještě přidám nastavení webů v apachi a pak už k dotazu:

NameVirtualHost *:80
DocumentRoot /var

<VirtualHost *:80>
UseCanonicalName off
ServerName www.domena1.org
ServerAlias *.domena1.org
VirtualDocumentRoot /var/www/domena1.org
</VirtualHost>

<VirtualHost *:80>
UseCanonicalName off
ServerName www.domena2.org
ServerAlias *.domena2.org
VirtualDocumentRoot /var/www/domena2.org
</VirtualHost>

<VirtualHost *:80>
UseCanonicalName off
ServerName domena3.org
ServerAlias *.domena3.org
VirtualDocumentRoot /var/www/%0
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www-default/default
</VirtualHost>

Narazil jsem v podstatě na dvě možné varianty řešení a ani jedna nepostihuje moji situaci:

1) pomocí suphp, jenže tam končím na symlinkách, v podstatě je to použitelné v případě, kdy bude co web to uživatel, který se bude přihlašovat přímo do jeho pracovního adresáře

2) pomoc mod_userdir, kdy ovšem v adrese musí být uživatelské jméno a jsem v podstatě v totožné situaci, jako v předchozím případě, tedy že je možná administrace vždy jen jednoho adresáře s jedním webem

Možná by můj problém vyřešil odlišný způsob přihlašování uživatelů, aby fungovaly symlinky. Pak by weby mohly být v jednom velkém adresáři, tudíž by apache něměl problém a uživatelé by mohli administrovat, co je jim přístupno. Dokonce by i více uživatelů mohlo sdílet některé weby pro administraci.

Je mi jasné, že buď budu muset slevit nároky na bezpečnost nebo na uživatelský komfort.

Jak bych tedy rád, aby to fungovalo?

1) jeden velký prostor s weby a v jednotlivých uživatelských adresářích linky.
sleva na bezpečnosti - uživatel po přihlášení bude muset mít oprávnění se po symlinku dostat i ven ze svého adresáře, při sdílení webu mezi uživateli, bude nutné zvednout práva i pro skupinu, aby mohli oba měnit
sleva na komfortu - uživatel nebude moct založit nový web bez mého zásahu

2) každý uživatel má svůj prostor a v něm weby, webserver při dotazu prochází všechny adresáře
teď mě napadlo, že to není dobrá varianta, protože při schodě jmen apache není schopen rozpoznat, který je pravý

3) každý uživatel má svůj adresář s webama, které jsou linkovány do společného prostoru
sleva na bezpečnosti - apache musí opustit svůj vymezená adresář
sleva na komfortu - jeden web nemuže sdílet víc uživatelů

Ideální varianta) Apache má všechny weby v jednom adresáři, každý s jiným UID a provozuje je pomocí suphp, tedy není možné, aby se jeden web dostal do prostoru druhého webu. Přístup uživatelů je danamicky upravitelný přičemž i při editaci uživatel si web zachovává stejné uživatelské údaje. Uživatel vidí "virtuální" adresář s, pouze jeho, přístupnými weby. Je vůbec tato varianta možná? Jde vytvořit nějaký filesystem access (ftp, samba, sftp), který by nabídl virtuální adresářovou strukturu a přepisoval při zápisu práva?

Nějaké jiné řešení? Jak je to uděláno u opravdu velkých hostingů, kde veškeré tyto kroky musí být automatizované?

Předmět Autor Datum
A zas zadna odpoved :-D. Ja se asi neumim ptat. Priste zkusim dotaz s predmetem "pomoc", na ten byva… poslední
JR_Ewing 28.03.2012 17:07
JR_Ewing

A zas zadna odpoved :-D. Ja se asi neumim ptat. Priste zkusim dotaz s predmetem "pomoc", na ten byva vic odpovedi.

Ale napadlo me adresar vyexportovat jako smb a pripojit ho do adresaru pristupnych uzivatelum. Samba umi pekne maskovat prava a i rozdilni uzivatele by mohli mit pristup do stejnych adresaru. Ale uznavam, je to poradna prasarna.

Zpět do poradny Odpovědět na původní otázku Nahoru