www.kom.cz Zákaznická podpora

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
2. Jak nastavovat práva souborů
2.1. Práva jiných, než CGI souborů
2.2. Práva CGI souborů
2.3. Jak zapisovat do souborů
2.4. 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ů.



@2003 Richard Ruibar, www.kom.cz