[RH 7.2] Apache kan niet in dir komen [n00b]

Pagina: 1
Acties:

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 23:07
Als eerste wil ik jullie even waarschuwen .. ik ben nog maa een linux n00b, maar ik doe me best om hte allemaal snel te leren.

Korte inleiding:
Ik heb met een paar vrienden wat hardware gekocht om daar een bak van te bouwen die als CS + web server dient. We waren het al snel eens over het OS : linux. Alhoewel we er niet echt veel van af wisten, en dat het instaleren/configureren veel meer tijd zou gaan kosten dan dat we voor Win2k haden gekozen. Ik vind het ook gewoon een uitdaging wat over linux te leren enzo ..

Tot nu toen ging het meeste allemaal wel goed, CS draait prima, apache staat er op, mysql draait lekker, php doet het enz.

Apache werkt opzich wel maar nu heb ik het volgende probleem :
Apache draait onder de user/group "httpd" en er staan wat sites onder /home/httpd/, bv www en games. deze werken ook allemaal prima met virtualhosts. Maar, nu wil ik wat users ook een webdir geven bv /home/mafioso/www/ en dit moet dan mafioso.brokenliquid.net worden. Nu heb ik de volgende virualhost voor gemaakt :

<VirtualHost *>
DocumentRoot "/home/mafioso/www/"
ServerName mafioso.brokenliquid.net
ErrorLog "/var/log/httpd/mafioso./error.log"
CustomLog "/var/log/httpd/mafioso./access.log" common
</VirtualHost>

Maar als ik nu naar mafioso.brokenliquid.net ga krijg ik een 403: Forbidden.

Na wat zoeken met de GoT-search kwam ik er achter dat ik de user httpd daar ook rechten moest geven.

Dit heb ik toen gedaan met:
chown httpd.httpd /home/mafioso/www/
chmod 755 /home/mafioso/www/
chown httpd.httpd /home/mafioso/www/*
chmod 755 /home/mafioso/www/*

Dit heeft dus niet het door mij verwachte resultaat, ik krijg nog steeds een 403.

Ik heb ook al paar keer apache gerestart, maar nix heeft geholpen.

Verwijderd

Ik gok dat /home/mafioso alleen voor de user maffioso toegankelijk is of niet? ;)

Dat is dus je probleem.

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 23:07
euh dat denk ik ook ?, maar dat zo ik toch verandert moeten hebben met die 4 comando's ? of niet ?

Verwijderd

Wel voor de directory /home/mafioso/www (en de direct daaronder liggende dirs/bestanden).

Echter je kan de dir /home/mafioso niet inkomen als user httpd (althans gok ik zo).

Probeer maar eens als root uit:
code:
1
2
3
4
5
6
7
mkdir /tmp/test
mkdir /tmp/test/test2
chown mafioso:mafioso /tmp/test/test2
chmod 770 /tmp/test
su mafioso
cd /tmp/test
cd /tmp/test/test2

Je zult zien dat je beide dirs niet in kan komen, ondanks dat je voor de dir /tmp/test/test2 wel de juiste permissies zou hebben (je bent zelfs eigenaar van die dir met normaliter als eigenschap voor die dir 755 (standaard umask 022)).

Als je de dir weer weg wil hebben ;)
code:
1
2
exit
rm -fr /tmp/test

Er zijn 3 oplossingen voor dit probleem die mij zo te binnen schieten:

• Je kan de homedirectories voor iedereen toegankelijk maken. Dit is iets wat ik normaliter nooit doe, omdat je dan met verkeerde permissies op bestanden in die directories nog bestanden open en bloot neer kan leggen voor mensen die er misschien helemaal niets te zoeken hebben.

• Je kan als groep aan de betreffende homedir de groep httpd geven (de user httpd kan toch niet inloggen op het systeem). Zorg er uiteraard wel voor dat de betreffende dir ook voor de groep httpd toegankelijk is:
code:
1
2
chown mafioso:httpd /home/mafioso
chmod 750 /home/mafioso


• Je maakt een aparte home-dir aan waarin je iedere user die een www-dir moet krijgen een aparte subdir geeft
code:
1
2
3
4
5
6
7
8
mkdir /home/www-users
mkdir /home/www-users/mafioso

chown httpd:users /home/www-users
chmod 550 /home/www-users

chown mafioso:httpd /home/www-users/mafioso
chmod 750 /home/www-users/mafioso

Ik zelf geef de voorkeur aan de laatste optie :)

[edit]
(uiteraard kan je bij de laatste optie nog in de dir /home/mafioso een symlink "www" maken die naar /home/www-users/mafioso wijst, zodat je via samba, ftp, shell makkelijk op de juiste plaats terecht komt als user zijnde.
Overigens is het nog mooier om een groep www-users aan te maken voor bovenstaande voorbeeld en als groep aan /home/www-users de groep www-users te geven, zodat die dir alleen toegankelijk is voor de mensen in de juiste groep. Dat laatste is niet strikt noodzakelijk omdat de mensen die er niks te zoeken hadden sowieso al niks in die dir konden doen. Echter het is wel zo verstandig om bij het maken van structuren dit meteen goed te doen ;)
Zo leer je jezelf netjes werken en jezelf te behoeden voor het maken van foutjes die je systeem per ongeluk open en bloot zouden kunnen leggen.

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 23:07
Bedankt voor je snelle en uitgebreide reactie, ik ga het zo eens proberen. Ik laat wel weten of het is gelukt.