Práva souborů a skupiny na našem serveru
V jaké jste skupině * Kdo ještě je ve vaší skupině * Jak nastavovat práva souborů a skriptů * Jak nastavovat práva adresářů
1. Uživatelé a skupiny
Při založení účtu je vytvořen váš uživatel se
jménem které se vám oznámí v průběhu objednávání služby ve třetím kroku
jako váš login (přihlašovací jméno). V případě ukázkového příkladu pro
doménu demo.kom.cz, byl vytvořen účet demo_komcz.
To je váš hlavní účet, se kterým se můžete
přihlašovat do řídícího panelu, a dále pomocí služeb FTP, SSH, SMTP,
POP3. Prostřednictvím řídícího panelu můžete měnit heslo u tohoto účtu.
Z technických důvodů je možno oddělit heslo pro řídící panel a ostatní
služby. Doporučejeme vám tuto změnu skutečně provést a pro řídící panel
používat jiné heslo než pro ostatní služby.
Současně s tímto hlavním uživatelem je vytvořena i
jeho skupina se stejným názvem. Ve vzorovém příkladu tedy jste po
přihlášní uživatelem demo_komcz, s implicitní skupinou demo_komcz.
Každý soubor, který po takovém přihlášení vytvoříte
pomocí libovolné služby (ŘP, SSH, FTP) má tedy vlastníka demo_komcz a
skupinu demo_komcz. Výchozí práva jsou pro soubory 644, pro adresáře
711.
V případě, že pomocí řídícího panelu vytvoříte
další POP nebo FTP účet, vytvoříte tím nového uživatele, který je členem
vaší skupiny. Například vytvoříme uživatele brouk pro FTP. Potom
přihlašovací jméno tohoto uživatele bude brouk_demo_komcz. Jeho
implicitní skupina bude demo_komcz. Pokud se tento uživatel přihlásí
pomocí FTP a vytvoří soubor, potom soubor bude mít vlastníka
brouk_demo_komcz a skupinu demo_komcz.
Váš hlavní účet, i všechny jeho podúčty jsou
zároveň členy skupiny zákazníků. Co se vaší skupiny týče, nikdo další
než váš hlavní účet a podúčty, které sami vytvoříte, členem této skupiny
není.
2. Jak nastavovat práva souborů
2.1. Práva jiných, než CGI souborů: 644
Práva všech souborů s vyjímkou CGI skriptů
nastavujte na 644. Používejte je jak pro .html, .shtml, .txt a .php soubory, tak i pro
obrázky. Toto je výchozí nastavení práv u každého nově
vytvořeného souboru, takže pokud nebudete práva měnit, není třeba se
jimi v těchto případech zabývat.
Tato práva znamenají čtení celým světem a zápis pro
vlastníka. Jsou to standardní práva pro HTML soubory, obrázky aj., kde
nevadí vyzrazení zdorjového kódu souboru. Resp. předpokládá se, že právě
zdrojový kód se bude zpřístupňovat, jako např. u HTML souborů.
Jiná situace je u PHP souborů, tam není v našem
zájmu dávat k dizpozici jejich zdrojové kódy celému světu, k čemuž speciálně v
případě PHP souborů na našem serveru, při tomto nastavení práv nedojde.
Nastavení práv stromu souborů je takové, že se
nikdo jiný, než uživatel pod kterým běží webový server do vašeho adresáře nedostane. A webový
server ví, že stránky s příponou .php nemá předávat tak jak jsou, ale že
je má předat interpretru PHP a teprve jeho výstup dát klientovi.
2.2. Práva CGI souborů: 500, příp. 700
Této problematice je věnována kapitola
kapitola 3 v
dokumentu cgi.html (CGI skripty).
2.3. Jak zapisovat do souborů
Pokud potřebujete, aby vaše skripty zapisovaly
údaje do nějakého souboru, nejbezpečněji to provedete pomocí CGI
skriptů. Potom totiž nemusíte nastavovat souboru práva zápisu celým
světem, stačí toto povolit vám, tedy vlastníkovi, viz. výše zmiňovaný
odkaz o právech CGI skriptů.
Zápis do souborů pomocí php skriptů příliš
nedoporučujeme. V tomto případě je totiž nutné nastavit nebezpečná
práva zápisu celým světem. Skutečnosti, že do nich nemůže zapisovat
nikdo jiný než vy je dosaženo jinými prostředky, například tím, že nikdo
jiný než vy a webový server nemá přístup do vašeho adresáře, proto
nemůže nikdo jiný manipulovat s vašimi soubory, ať mají práva jakákoliv.
Rozhodně však soubor pro zápis PHP skriptem neumisťujte do adresáře /www nebo
/cgi-bin. Pokud by jste tohle udělali, potom by do takového souboru mohl zapisovat
teoreticky kdokoliv pomocí standardních funkcí protokolu HTTP - skrze
webový server. Je-li však soubor
umístěn mimo tyto adresáře, potom k nim webový server nemůže (váš php skript ano).
Vyšší míru bezpečnosti nabízí jednoznačně zápis pomocí CGI
skriptů, protože v tomto směru je ochran několik, případný útočník by
je musel překonat všechny a některé z nich jsou takového charakteru, že
pochybujeme o tom, že by je šlo prolomit.
V případě zápisu pomocí PHP je míra bezpečnosti
nižší, protože soubory samy o sobě musí mít atribut zápisu celým světem.
I zde je sice míra bezpečnosti poměrně
vysoká, nicméně pro nejnáročnější aplikace, tak náročné, že počítají i s
rizikem možného hackerského průniku, doporučejeme použít raději CGI.
Práva pro soubory, do kterých potřebuje PHP skript zapisovat (a číst z nich): 666
Práva pro soubory, do kterých potřebuje CGI skript zapisovat (a číst z nich): 600
Pár rad závěrem:
Pokud se prostřednictvím nějaké veřejné služby
zapisují data do souboru, ze kterého si je později bere jiný (nebo týž) skript,
aby na základě těchto dat poskytl výstup uživateli. V takových situacích
bývá dobrým zvykem, kontrolovat korektnost dat nejen v programu, který
provádí zápis do souboru, ale i v programu, který si je z takového
souboru bere. Jde zde například o to, že pokud je uživatel vaší služby šikovnější
než vy, může standardní webové formuláře nakrmit daty, která ve vašem
souboru způsobí zmatek. Proto nejlepší programátoři kontrolují nejen
vstup od uživatele, který se má ukládat do souborů, ale i později, pokud
se data ze souboru čtou, i zde provádějí kontrolu správnosti dat. Dělají
to ti nejlepší, přestože vědí, že vstup od uživatele dokáží
náležitě ošetřit. Důvod ? Čert nikdy nespí.
Při kontrole vstupních dat, ve svých regexpech vždy používejte
implicitní zamítnutí. Běžně se této technice říká explicitní povolení, ale tenhle
termín mi připadá příliš kostrbatý a na první pohled málo výstižný,
možná zavádějící.
O co jde. V regexpech nekontrolujte, zda vstupní
řetězec obsahuje nepovolené znaky, ale kontrolujte naopak, že tam jsou
jen ty povolené. Vždy je totiž snazší vyjmenovat povolené znaky, než všechny
zakázané. Jinými slovy: vše je zakázáno, s vyjímkou definovaných znaků.
Namísto: vše je povoleno s vyjímkou definovaných znaků.
2.4. Jak nastavovat práva adresářů
Pro ostatní nastavujte vždy jen práva čtení nebo
spouštění. Rozhodně se vyvarujte nastavování práva zápisu pro kohokoliv
jiného, než pro vlastníka (tedy vás). Právo zápisu do adresáře totiž
také znamená právo mazat v něm libovolné soubory a to i takové, ke
kterým uživatel nemá práva. V prostředí Unixů je totiž adresář zvláštním
druhem souboru, jehož obsahem je seznam souborů. Pokud má někdo právo do
něj zapisovat, znamená to, že může měnit jeho obsah a tudíž i
odstraňovat soubory, ke kterým jinak práva nemá. Je zde možnost jak si
pomoci pomocí tzv. sticky bitu. Pokud nutně potřebujete práva zápisu pro
adresář, kontaktujte podpora@kom.cz
se žádostí o pomoc.
Pozn.: právo spouštění u adresáře znamená, že je
možné tento adresář nastavit jako pracovní.
Čtení nebo spouštění ? V první instanci pouze spouštění (1) ve
druhé čtení (4). Spouštění všemi musí mít každý adresář, ze kterého
chcete prostřednictvím webu zobrazovat soubory. Pokud by toto právo
neměl, potom by se k němu webový server nedostal. Je tedy nutné, aby adresář
měl alespoň práva 001. Pokud takto nastavíte práva adresáře, tak webový
server
dokáže zobrazit libovolnou stránku z tohoto adresáře. Nedokáže však
získat seznam souborů v takovém adresáři, protože na to by potřeboval
ještě právo ke čtení adresáře.
Praktický důsledek to má zřejmě jen v případě, kdy
uživatel zadá pouze cestu do adresáře, bez udání jména požadovaného souboru.
Pokud v takovém případě není v adresáři indexový soubor (index.php,
index.html atd.) Potom uživatel dostane chybové hlášení o odmítnutém
přístupu.
Takové nastavení je výhodné například u
adresářů s obrázky nebo u cgi-bin adresářů, kde většinou nechceme, aby
si kdokoliv mohl zobrazit jejich výpis. Pokud například v
/www/images/ nemáte soubor index.htm, nebo jiný indexový soubor, potom
dotaz http://www.vasedomena.tld/images/ , způsobí následující chybu:
Forbidden
You don't have permission to access /images
on this server.
|
Pokud naopak chcete aby v takovém případě webový server
alespoň vypsal seznam souborů, potom musíte okolnímu světu nastavit i právo ke čtení,
tedy 005 (5 = 1 + 4 = čtení + zápis). Pro vás lze u adresářů předpokládat, že budete chtít vždy všechna práva,
takže pro sebe budete nejčastěji nastavovat 7. Typická práva pro adresáře tedy jsou:
711, v případě, že nechcete aby Apache nabídl seznam souborů.
755, v případě, že chcete nabízet seznam souborů.
|