Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Apache2: Forbidden i když všechny soubory jsou 777 + start jako normální user?  (Přečteno 6723 krát)

Laethnes

  • Host
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
« Poslední změna: 30 Září 2008, 20:52:51 od Laethnes »

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Chtělo by to ten soubor /etc/apache2/sites-available/default (resp. ten, který využíváte) - bota bude v něm.
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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>

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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>
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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>

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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*

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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
« Poslední změna: 30 Září 2008, 21:53:33 od Laethnes »

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
apache2ctl configtest

ten adresář /home/laethnes/local_html má jaká práva?
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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) )

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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/.

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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? :)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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
$

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
A jako normální uživatel:
Kód: [Vybrat]
ls -a /home/laethnes/public_html/
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
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]
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Laethnes

  • Host
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/ ;)

pihhan

  • Návštěvník
  • Příspěvků: 11
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čí.

Laethnes

  • Host
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*

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Stačí upravit název topicu :) Udělám to.

[edit]
Tak neudělám, nějak mne fórum nechce pustit :(
[/edit]
« Poslední změna: 01 Října 2008, 11:49:39 od Petr Merlin Vaněček »
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

 

Provoz zaštiťuje spolek OpenAlt.