Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: Laethnes 30 Září 2008, 20:45:34

Název: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 20:45:34
Zkouším si nastavit u sebe na Ubuntu8.04 server Apache2; jen pro "domácí" účely. Pracuju na nějakých webových stránkách v PHP a je zbytečné při každé změně souboru to uploadovat; prostě chci mít funkční server, ale nepotřebuji, aby byl přístupný zvenčí (statickou IP stejně nemám :3).

Nainstaloval jsem si Apache2 s modulem PHP5. Mám ale problém; když mám data na implicitním /var/www/, vše funguje (včetně PHPčka), ale když si nastavím adresu do svého domovského adresáře, najednou to píše Forbidden (v prohlížeči). Disk mám rozdělen na několik částí a webová data prostě do / nepatří, na to je /home resp. mám speciální ntfs (společná komunikace s Win) disky pro data. Ve fstab jsem jim nastavil maximální práva (777, resp. umask=000), takže soubory práva 100% mají (ověřeno). Nefunguje to ani když v /etc/apache2/sites-enabled/000-my_site nastavím přímo adresu, ani když ji nastavím na /var/www a /var/www udělám odkazem (sym); ani když takový odkaz vložím do této složky (v tom případě serverový výpis zobrazuje ostatní složky/soubory, jen ne ty linky). Neví někdo co s tím? V nastavení mám 'Options FollowSymLinks'.

A nebylo by možné nějak spustit Apache jako normální user? Přičemž vím, že
 - port musí být vyšší jako 1024
 - musím nastavit logy takové, které může daný uživatel přepisovat

Mimochodem; protože Apache používám jen k výše uvedeným důvodům, je zbytečné ho startovat vždy při startu PC. Prošel jsem všechny /etc/rc*.d a všechny soubory, které jsem tam našel a měly v názvu apache2 jsem přejmenoval z S* na K*. Je to tak správně, nebo mám udělat ještě něco?
Startuju jej pak /etc/init.d/apache2 start.

EDIT: ještě jsem zapomněl; pochopitelně apache zapínám přes sudo, ale firefox (v němž testuji) mám jako normální user a taky jsem zkusil ve fstabu změnit uid i gid disku, kde se nachází inkriminované stránky, na roota; stále stejný výsledek...
 - pochopitelně obsah servru musí být uživateli přístupný
ale pořád nefunguje
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 21:23:58
Chtělo by to ten soubor /etc/apache2/sites-available/default (resp. ten, který využíváte) - bota bude v něm.
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 21:32:57
Chtělo by to ten soubor /etc/apache2/sites-available/default (resp. ten, který využíváte) - bota bude v něm.

Oki, ale já ho moc neměnil :3

Kód: [Vybrat]
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

#DocumentRoot /home/laethnes/Data/5_Programovani/3_WebServer/diskw/www/
DocumentRoot /var/www/
#DocumentRoot /home/laethnes/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

#ErrorLog /home/laethnes/Data/5_Programovani/3_WebServer/diskw/linuxdata/log/error.log
ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

#CustomLog /home/laethnes/Data/5_Programovani/3_WebServer/diskw/linuxdata/log/access.log combined
CustomLog /var/log/apache2/access.log combined
ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 21:35:47
No to vidím :D

Kód: [Vybrat]
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName localhost

DocumentRoot /home/laethnes/Data/5_Programovani/3_WebServer/diskw/www/
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</virtualhost>
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 21:38:31
No to vidím :D

Kód: [Vybrat]
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName localhost

DocumentRoot /home/laethnes/Data/5_Programovani/3_WebServer/diskw/www/
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</virtualhost>

Huh? To co píšeš tam mám dát? Tož, možu to zkusit, ale upozorňuji, že defaultně to vypadalo podobně a to takto:

Kód: [Vybrat]
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 21:40:06
jj, udělej si zálohu toho originálu, pak kompletně odmaž obsah (stejně ty ostatní věci nepotřebuješ) a dej tam to, co jsem psal
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 21:41:44
jj, udělej si zálohu toho originálu, pak kompletně odmaž obsah (stejně ty ostatní věci nepotřebuješ) a dej tam to, co jsem psal

Hm, bohužel; stále 403 Forbidden :/

EDIT: Od jisté doby se snažím dělat zálohy při takových operacích pravidelně *kapka*
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 21:45:01
Apache předpokládám doznal po oné úpravě restartu?

Zkus nastavit ten domovský adresář na nějaký na ext3 systému (tj. kdekoliv jinde, než na ntfs či /var/www)
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 21:50:30
Apache předpokládám doznal po oné úpravě restartu?

Zkus nastavit ten domovský adresář na nějaký na ext3 systému (tj. kdekoliv jinde, než na ntfs či /var/www)

Ne, nedoznal restartu ale rovnou znovuspuštění, protože předtím už neběžel :3

Mno, ale tentokrát ho doznal, ale ... nic. Pořád nefunguje... (/home/laethnes/public_html - součást ext3 /home)

EDIT: zkusil jsem (pro jistotu) /var/www/ a to zas funguje...
EDIT2: /home/laethnes/public_html/ je na 777
BTW oprava, nebyla to složka local_html, ale public_html
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 21:54:13
apache2ctl configtest

ten adresář /home/laethnes/local_html má jaká práva?
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 21:58:33
apache2ctl configtest

Configtesty jsem prováděl už dřív (než jsem se ptal (zapomněl jsem na to :3) ) a vše je OK. Teda skoro vše:

Kód: [Vybrat]
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Syntax OK

Ale ta chyba domény se objevuje i při startu/vypnutí apache a podle mě to není tím, protože když je nastaven na /var/www/, zobrazí se taky, ale v tom případě funguje.
(Mimochodem, stejná hláška (u configtestu) se objevuje jak s, tak bez použití suda)

ten adresář /home/laethnes/local_html má jaká práva?

Viz můj předposlední přízpěvek: edit; 777, (uid, gid: moje (laethnes) )
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 22:04:25
Té chyby bych si v tuto chvíli vůbec nevšímal, neb je nepodstatná (a pokud si jí chcete všímat, tak projděte fórum, řešilo se to několikrát)

Napadá mne ještě jedna možnost - pomocí .htaccess přepisujete nastavení daného adresáře (což je povoleno) a on neumožňuje nepřímé odkazy na index - zkuste do daného adresáře vytvořit třeba soubor index.php a odkázat se naň přímo - tj. http://localhost/index.php ... také by možná mnohému napověděly logy ve /var/log/apache2
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 22:10:00
Té chyby bych si v tuto chvíli vůbec nevšímal, neb je nepodstatná (a pokud si jí chcete všímat, tak projděte fórum, řešilo se to několikrát)

Napadá mne ještě jedna možnost - pomocí .htaccess přepisujete nastavení daného adresáře (což je povoleno) a on neumožňuje nepřímé odkazy na index - zkuste do daného adresáře vytvořit třeba soubor index.php a odkázat se naň přímo - tj. http://localhost/index.php ... také by možná mnohému napověděly logy ve /var/log/apache2

Však já si jí moc nevšímám :3.

Ne, přímé použití index.php nepomáhá. .htaccess používám aktivně, mám tam
Kód: [Vybrat]
allow from all

Mě bohužel errorlog nic nenapověděl ani nenapovídá:

Kód: [Vybrat]
[Tue Sep 30 21:49:04 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 21:49:30 2008] [notice] caught SIGWINCH, shutting down gracefully
[Tue Sep 30 21:49:41 2008] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch configured -- resuming normal operations
[Tue Sep 30 21:49:47 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 21:49:48 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 21:50:51 2008] [notice] caught SIGWINCH, shutting down gracefully
[Tue Sep 30 21:51:01 2008] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch configured -- resuming normal operations
[Tue Sep 30 21:52:16 2008] [notice] caught SIGWINCH, shutting down gracefully
[Tue Sep 30 21:52:26 2008] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch configured -- resuming normal operations
[Tue Sep 30 21:52:33 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 21:53:36 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 22:05:25 2008] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Tue Sep 30 22:05:28 2008] [error] [client 127.0.0.1] (13)Permission denied: access to /index.php denied

Prostě píše, co i firefox...

A v access.log nevidím nic, co by bylo s problémem spojeno:

Kód: [Vybrat]
127.0.0.1 - - [30/Sep/2008:21:12:42 +0200] "GET /MojeTvorba/ HTTP/1.1" 200 2030 "http://localhost/list.php" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:44 +0200] "GET /MojeTvorba/Rehtoni/ HTTP/1.1" 200 9784 "http://localhost/MojeTvorba/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:46 +0200] "GET /MojeTvorba/Rehtoni/ HTTP/1.1" 200 9784 "http://localhost/MojeTvorba/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:46 +0200] "GET /MojeTvorba/Rehtoni/rehtoni/files/base/page/menu_up_0.jpg HTTP/1.1" 304 - "http://localhost/MojeTvorba/Rehtoni/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:46 +0200] "GET /MojeTvorba/Rehtoni/rehtoni/files/base/page/cz.jpg HTTP/1.1" 304 - "http://localhost/MojeTvorba/Rehtoni/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:46 +0200] "GET /MojeTvorba/Rehtoni/rehtoni/files/base/page/en.gif HTTP/1.1" 304 - "http://localhost/MojeTvorba/Rehtoni/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"
127.0.0.1 - - [30/Sep/2008:21:12:46 +0200] "GET /MojeTvorba/Rehtoni/rehtoni/files/base/page/menu_main_0.jpg HTTP/1.1" 304 - "http://localhost/MojeTvorba/Rehtoni/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (.NET CLR 3.5.30729)"

Samozřejmě v obout případech uvádím jen konce souborů. Jo a mimochodem, ty soubory z access.log jsou ty z /var/www/.
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 22:14:09
To vidím :)

ok, tak jinak:
Kód: [Vybrat]
sudo su
su www-data
cat /home/laethnes/public_html/index.php

Co to vypíše? :)
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 22:17:02
To vidím :)
Já jen pro jistotu :3

ok, tak jinak:
Kód: [Vybrat]
sudo su
su www-data
cat /home/laethnes/public_html/index.php

Co to vypíše? :)

Kód: [Vybrat]
laethnes@Laethnes:~$ sudo su
[sudo] password for laethnes:
root@Laethnes:/home/laethnes# su www-data
$ cat /home/laethnes/public_html/index.php
cat: /home/laethnes/public_html/index.php: Permission denied
$
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 22:20:24
A jako normální uživatel:
Kód: [Vybrat]
ls -a /home/laethnes/public_html/
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 22:25:18
A jako normální uživatel:
Kód: [Vybrat]
ls -a /home/laethnes/public_html/

Ten druhý řádek jsem přidal jen kdyby se náhodou hodil :3
Kód: [Vybrat]
laethnes@Laethnes:~$ ls -a /home/laethnes/public_html/
.  ..  index.php  Rehtoni
laethnes@Laethnes:~$ ls -la /home/laethnes/public_html/
total 16
drwxrwxrwx  3 laethnes laethnes 4096 2008-09-30 22:23 .
drwxr-xr-- 51 laethnes laethnes 4096 2008-09-30 22:23 ..
-rwxrwxrwx  1 laethnes laethnes   30 2008-09-30 22:23 index.php
drwxrwxrwx  7 laethnes laethnes 4096 2008-09-22 21:04 Rehtoni
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 30 Září 2008, 22:33:56
Upadlo mi písmenko :) Už bych asi neměl více pít :)

Mrknu na to zítra. ;)

[edit]
A příspěvek číslo 2288 je tak hezké pořadí, že je opravu čas jít do pelechu :)
[/edit]
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 30 Září 2008, 22:36:00
Upadlo mi písmenko :) Už bych asi neměl více pít :)

Mrknu na to zítra. ;)

[edit]
A příspěvek číslo 2288 je tak hezké pořadí, že je opravu čas jít do pelechu :)
[/edit]

Heh, ok ;). Zatím moc moc dík za pomoc a snahu. Taky jsem si říkal, že už bych šel spat, koneckonců, když bude nejhůř, pořád funguje /var/www/ ;)
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: pihhan 01 Října 2008, 10:01:41
Tipuju problém v nastavení práv /home/laethnes

Pokud vypada ls -ld /home/laethnes takto:

drwx------

Tak je problém jasný, apache se nedostane ani do home, tedy se nedostane ani do žádného podadresáře v něm. Osobně bych preferoval "vyvlastnění" adresáře /var/www tímto:
chown -R laethnes /var/www

Když budou všechny soubory tvoje, neměl by mít apache problém to jenom číst, ty nebudeš mín na každém normálním systému problém tam zapisovat. Aby jsi to měl blíž z home, můžeš si udělat link

cd && ln -s /var/www

Jinak puštění apache do tvého adresáře jde provést asi 2 způsoby:
sudo chgrp www-data /home/laethnes
chmod g+r /home/laethnes

Nebo o něco méně bezpečný:
chmod o+x /home/laethnes

Druhým pustíš všechny uživatele systému do svého home, a záleží jenom na nastavení jednotlivých podadresářů. PGP a spol si nastavení podadresářů hlídají, ale třeba historii tvého brouzdání z opery nebo firefoxu si lze snadno přečíst :) Pokud to používáš sám, není to tak hrozný způsob, ale zvyk je železná košile a pustit někam všechny kvůli jednomu je špatný zvyk. Nicméně na lepší nastavení to chce hraní se skupinami, pro jednoduchou funkčnost tohle stačí.
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Laethnes 01 Října 2008, 10:19:47
Pokud vypada ls -ld /home/laethnes takto:

drwx------

Ne tak úplně; drwxr-xr--; dobré upozornění :3

Tak je problém jasný, apache se nedostane ani do home, tedy se nedostane ani do žádného podadresáře v něm. Osobně bych preferoval "vyvlastnění" adresáře /var/www tímto:
chown -R laethnes /var/www

To už jsem udělal dávno; apache tam měl přístup, ale ne formou odkazů :3 do /home/laethnes/...

sudo chgrp www-data /home/laethnes

WOOOOOW!!! Dřív, než jsem udělal cokoli jiného na svém PC, zaujala mě tato řádka, tak jsem to zkusil - a ONO TO FUNGUJE! Dokonce jsem takto nastavil JEN ten /home/laethnes/ (bez rekurzívy) a apache má pěkný přístup i do hloubky ;).

Skvělé díky ;) už to funguje absolutně bez problémů ;)

Druhým pustíš všechny uživatele systému do svého home, a záleží jenom na nastavení jednotlivých podadresářů. PGP a spol si nastavení podadresářů hlídají, ale třeba historii tvého brouzdání z opery nebo firefoxu si lze snadno přečíst :) Pokud to používáš sám, není to tak hrozný způsob, ale zvyk je železná košile a pustit někam všechny kvůli jednomu je špatný zvyk. Nicméně na lepší nastavení to chce hraní se skupinami, pro jednoduchou funkčnost tohle stačí.

Mno, já jsem jediný, kdo na tom mojem PC pracuje, ale souhlasím; až budu někdy spravovat PC pro víc uživatelů (a to nebude trvat tak dlouho :3), chci mít znalosti a zvyky, které s tím počítají ;)

Takže všem moc díky za snahu a pomoc, jste skvělí ;). Jen jedna věc: kde najdu tlačítko pro editaci názvu topicu, abych tam mohl přidat "[VYŘEŠENO]"? *kapka*
Název: Re: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?
Přispěvatel: Petr Merlin Vaněček 01 Října 2008, 11:48:01
Stačí upravit název topicu :) Udělám to.

[edit]
Tak neudělám, nějak mne fórum nechce pustit :(
[/edit]