Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: etoyoc 07 Září 2008, 21:02:48
-
Zdravím. Mám problém, že se mi v localhost nezobrazují stránky. Nevím, jak mají být nastavená práva, ale při výpisu /var/www/ mi to vypíše toto:
lrwxrwxrwx 1 root root 24 2008-09-07 14:43 stranky -> /media/DATA/web/stranky
-
No hlavně musí mít uživatel, pod kterým běží apache (standartně www-data) přístup do toho cíloveho adresáře (tzn. že musí projít i celou cestou /media/DATA/web/stranky). A předpokládám, že /etc/apache2/sites-available/default jsi neměnil.
-
Nn, tam jsem nic neměnil. Jak to tedy zprovozním?
-
tak nevím jakej je to výpis, ale majitel je evidentně root...při přihlášení jako su by mělo všechno jet v pohodě.
-
No a co to dělá, když "se nezobrazují stránky"? Vypíše nějakou HTTP chybu? Nebo řekne, že adresa není dostupná? Nebo se zobrazí jen prázdná stránka?
-
Forbidden You don't have permission to access /stranky on this server.
-
Forbidden You don't have permission to access /stranky on this server.
Tak to je problém v tom, že do cesty /media/DATA/web/stranky nemá uživatel www-data přístup
-
A jak to tedy nastavím tak, aby ho měl?
-
No tak je chyba v tom, že nemá práva buď do /media (to trochu pochybuju), /media/DATA nebo /media/DATA/web nebo /media/DATA/web/stranky. Stačí mu právo číst z těchto adresářů. Nevím, jak jsi na tom se znalostí práv v unixovýxh systémech... Kdybys nevědel, tak sem dej podrobné výpisy jednotlivých adresářů /media/, /media/DATA/ a /media/DATA/web/. Tedy příkazů:
ls -l /media/
ls -l /media/DATA/
ls -l /media/DATA/web/
-
S právama sem na tom špatně :'( Jinak bych to byl schopen třeba udělat sám. Tady sou ty výpisy:
v /:
drwxr-xr-x 7 root root 4096 2008-09-08 12:30 media
v /media/:
drwx------ 21 mates root 32768 2008-09-08 12:37 DATA
v /media/DATA/:
drwx------ 32 mates root 32768 2008-09-07 14:37 web
v /media/DATA/web/:
drwx------ 5 mates root 32768 2008-09-01 13:50 stranky
-
Mno... Tak pis:
sudo chmod 755 /media/DATA/
sudo chmod 755 /media/DATA/web
sudo chmod 755 /media/DATA/web/stranky
Tim každému z těch adresářů dáš práva 755, první číslo je pro vlastníka (v tomhle případě mates), druhé pro skupinu (tady root) a třetí pro všechny ostatní. 7 znamená čtení, zápis i spouštění. 5 potom čtení a spouštění. Je to vždy součet čtení (4), zápis (2) a spouštění (1). Aby ses dostal do adresářů, tak musí mít příznak spouštění nastaven.
No a jelikož www-data není aní vlastníkem a předpokládám ani ve skupině root, tak se ho týká třetí číslice.
Případně můžeš tohle naklikat v nautilu (na vlastnostech je záložka oprávnění). Samozřejmě se totéž musí nastavit na veškerém obsahu adresáře stranky. Ale není dobré dát tam na všechno 755, protože tím dáš spouštěcí právo i na soubory, které nejsou spustitelné. Takže si to chce s tím trochu pohrát.
Nejjednodušší by bylo všemu dát vlastníka www-data, ale tím bys do těch adresářů zase ztratil přístup ty jako uživatel mates. Ale kdyby náhodou, tak to uděláš příkazem
sudo chown -R www-data /media/DATA/web/stranky
případně
sudo chown -R www-data:www-data /media/DATA/web/stranky
aby se změnila i skupina na www-data.
-
Tak jsem to provedl a pořád se to chová stejně. A podle výpisů jsou ty práva pořád nastavené tak jak byly. Když sem to zkusil naklikat v nautilu, tak to nešlo změnit. Asi bude nějaký problém v tom, že DATA je ntfs oddíl a mountuje se asi tak, abych na něho měl práva jen já.
-
Asi bude nějaký problém v tom, že DATA je ntfs oddíl a mountuje se asi tak, abych na něho měl práva jen já.
ano, presne v tom je problem. asi to nemuzete mit ulozeny jinde, co? budete muset explicitne zadat masku pro pristupova prava pro tento oddil v /etc/fstab
-
Tak sem to zkusil přesunout do domovskýho adresáře a teď to zase píše:
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Fatal error: Unknown: Failed opening required '/var/www/stranky/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
-
Tak sem to zkusil přesunout do domovskýho adresáře a teď to zase píše:
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Fatal error: Unknown: Failed opening required '/var/www/stranky/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
No ale je tam opět Permission denied, tzn. že ještě někam nesmí... Najspíš na zmiňovaný index.php, ne?
-
Podivejte, v konfiguraci apache mate nastaveno, ze localhost mate v adresari /var/www/. Pokud jste stranky nahral do domovskeho adresare, tak se ani zobrazit nemohou. Navic jste mel (mozna jeste mate) misto /var/www symbolicky link na ntfs oddil, coz neni zrovna nejlepsi napad. Pokud jste ten link zrusil a mate jiz obycejny adresar /var/www, do ktereho jste nahral svoje stranky a pise to vyse uvedene, tak pak mate stale spatne nastavena pristupova prava k nekteremu z tech adresaru nebo souboru.
Muzete nejak upresnit jake mate s temi strankami zamer? respektive zda je chcete upravovat i z windows a tedy by mely byt na ntfs oddilu (a tim padem vede spravna cesta pres upravu /etc/fstab) a nebo zda na ntfs oddilu byt nemusi?
V tom pripade bych doporucil modul user_dir, ktery umozni vsem uzivatelum snadne vytvareni html stranek:
1. nejdrive vytvorte ve svem domovskem adresari adresar public_html a nastavte pristupova prava
mkdir ~/public_html
chmod 755 ~/public_html
2. povolte modul user_dir, to se udela vytvorenim nasledujicich symbolickych linku
sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/userdir.load
sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/userdir.conf
3. restartujte apache
sudo /etc/init.d/apache2 restart
Svoje stranky si pak nahravejte do adresare public_html ve vasem domovskem adresari, budou pristupne jako http://localhost/~login, kde login je vas login. Takze napriklad vytvorime-li jednoduchy soubor index.html prikazem
echo '<html><head></head><body><h3>Nazdar</h3></body></html>' > ~/public_html/index.html
tak bude dostupny pod adresou http://localhost/~vaslogin/index.html ci jen http://localhost/~vaslogin/.
Adresar se nemusi jmenovat primo public_html, konfigurace je uvedena v tom souboru /etc/apache2/mods-available/userdir.conf,
viz
$ cat /etc/apache2/mods-available/userdir.conf
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
</Directory>
</IfModule>
kde se da public_html nahradit necim jinym a pripadne nastavit co uzivatele mohou a co nemohou delat (ve vyse uvedenem vypisu mam take povoleno spousteni CGI skriptu, ktere neni defaultne povoleno).
-
Tak sem teda ty stránky naházel do složky kterou sem si vytvořil v systému souborů: /data/. Nakopíroval sem si tam ty stránky, dal všemu v tom práva 755 a ve /var/www sem vytvořil odkaz. A ejhle, už to fachá. ;-) Díky všem, nicméně je divné, že mi to nechtělo fungovat z toho ntfs disku, když na noťasu mi to uplně stejnym způsobem (mountováním disku tak, že jsem na něho kliknul) běhalo bez problémů.