• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Apache lässt keinen zugriff auf htdocs zu

Nicmoe

Member
Hi! Ich hab folgendes problem: mein indianer meckert dass ich keine zugriffsrechte hab wenn ich htdocs öffnen will. was kann ich machen? hab auch schonmal probiert apache zu deinstallieren und hab auch /etc/apache2/ gelöscht und apache neu aufgezogen... hat alles nichts gebracht.

vielen dank schonmal für eure antworten

edit: ach ja noch mein system:
SuSE 10.0
Apache 2
apache web ordner: ????
habe den htdocs ordner unter /srv/www/ per chown so geändert dass ich schreibrechte hab.
 
OP
Nicmoe

Nicmoe

Member
Code:
drwxr-xr-x  2 root   root   160 2006-07-01 18:13 cgi-bin
drwxr-xr-x  4 root   root   128 2006-07-01 18:04 htdig
drwxr--r--  2 nicmoe users 1384 2006-07-03 17:42 htdocs
drwxr-xr-x  2 root   root   144 2006-07-01 18:11 icons
drwxr-xr-x  3 root   root    72 2005-09-13 04:19 tomcat5
 

rolle

Guru
Sieht eigentlich gut aus. Dennoch meckert das System, wenn Du etwas in das Verzeichnis schreiben möchtest? Seltsam. :?
 
OP
Nicmoe

Nicmoe

Member
nein nein! das hast du jetzt etwas falsch verstanden! ich kann da reinschreiben. nur wenn ich es per firefox aufrufen will meint er ich hätte kein recht.
 

rolle

Guru
Aaah, andere Baustelle. :lol: Kein Problem. Das Verzeichnis und die Dateien müssen für die Nutzerin wwwrun lesbar sein, da der apache2 unter dieser Kennung läuft. Ich weiß, daß sich das erst einmal beißt mit Komfortfragen. Ich habe hier die Lösung gefunden, daß das Verzeichnis root:root gehört und die Rechte 770 (nicht ganz sicher, aber ist nur ein Intranetserver) sind. Dann habe ich per ACLs wwwrun Lese- und Ausführrechte gegeben. Siehe dazu 'man setfacl', hier auch besonders die Option -d. So können alle Mitglieder der Gruppe root hemmungslos Dateien erstellen und wwwrun kann sie verarbeiten.
 
OP
Nicmoe

Nicmoe

Member
eigentlich müsste doch jeder der meine url bzw. ip weiss per firefox drauf zugreiffen. ich mein da spielt doch die gruppe keine rolle. und bevor ich linux neu draufgezogen hab isses auch noch gegangen...
 

rolle

Guru
Das läuft wohl so, daß, wenn ein Browser eine Seite sehen will, dann versucht wwwrun diese abzuholen und auszuliefern. Das klappt natürlich nur, falls ausreichende Rechte für dieselbe vorhanden sind und ist unabhängig davon, wer unter wessen Kennung oder an wessen Rechner den Browser ausführt.
 
OP
Nicmoe

Nicmoe

Member
was müsste ich da jetzt in der konsole eingeben? ich hab schon root wieder als besitzer gemacht. aber des mit dem ACLs blick ich noch nicht
 

rolle

Guru
Gut, versuchen wir mal einen Crashkurs.
Die Voraussetzung ist, daß die Partition, auf der /srv/www liegt, mit der Option 'acl' in der /etc/fstab steht.
Dann sehen wir uns die Ausgabe von 'setfacl --help' an und stellen fest, daß wir folgende Optionen in verschiedenen Kombination brauchen können: -m, -d, -R.
Zuerst bringen wir alle Dateien unterhalb /etc/www/htdocs inklusive htdocs selbst auf Vordermann.
Code:
setfacl -R -m user:wwwrun:r-x /srv/www/htdocs
Das ist jetzt aber ein einmaliger Zustand, der schon nicht mehr stimmt, wenn eine neue Datei erstellt wird. Deshalb setzen wir das eben gemachte als Standard.
Code:
setfacl -d -R -m user:wwwrun:r-x /srv/www/htdocs
Damit haben wir dem Verzeichnis htdocs und allen Unterverzeichnissen gesagt, daß jede neu in ihnen erstellte Datei und jedes ebensolches Verzeichnis mit denselben ACLs ausgestattet wird. Frei nach dem Motto: Set it and forget it.
Mit 'getfacl /srv/www/htdocs' können wir uns jetzt die erweiterten Rechte ansehen. Hier gibt es drei Gruppen von Berechtigungen, die erste gibt die 'echten' Linuxbesitzverhälnisse an, die zweite die momentanen ACL-Rechte und die dritte die Default-ACL-Rechte. Noch klarer wird die Ausgabe von getfacl, wenn man an obigen Befehl noch '--all-effective' anhängt.
Zum tieferen Verständnis der ganzen Sache solltest Du aber mal in Ruhe die Manpages von setfacl und getfacl lesen oder mal nach einer deutschen Beschreibung im Internet suchen.
Ich hoffe das hilft Dir weiter.
 
OP
Nicmoe

Nicmoe

Member
ok danke das hat mir weitergeholfen! eine frage noch: wenn ich mir wieder schreibrechte gebe, ändert des dann irgedetwas? also praktisch dass ich mich wieder als eigentümer eintrage
 

rolle

Guru
Nein, das ist wurst. Die ACLs funktionieren so, daß sie innerhalb des Containers 'normale' Linuxberechtigungen existieren. Sie können also maximal z.B. einer Nutzerin a die Rechte der Besitzerin b der Datei geben. Sie sind dabei unabhängig davon, wer Besitzerin ist. Ich kann das gerade nicht gut erklären.
 
OP
Nicmoe

Nicmoe

Member
gut das funktioniert auch alles super! aber ich hab da jetzt den ordner phpmyadmin in in htdocs geschoben und auch wieder die acls umgeändert so dass die genauso sind wie bei allen anderen daten. blöderweise gehts immernoch nicht.

getfacl gibt aus:
Code:
# file: srv/www/htdocs/phpmyadmin
# owner: nicmoe
# group: users
user::rwx
user:wwwrun:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:wwwrun:r-x
default:group::rwx
default:mask::rwx
default:other::---
 

rolle

Guru
Wie genau lautet die Fehlermeldung des Browsers und was steht in den Logs unter /var/log/apache2 dazu?
 
OP
Nicmoe

Nicmoe

Member
ich habs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! juhu ich weiss woran es liegt! er findet den index.* nicht! das hab ich zufällig rausgefunden als ich mal so aus spass nicht nur den ordner sondern auch noch die index.php von phpmyadmin in die url eingegeben hab! jetzt muss ich nurnoch wissen wie man des ändern kann, sodass der den findet
 
OP
Nicmoe

Nicmoe

Member
hab mir die datei angeschaut. da sind alle dateitypen als mögliche index-dateien angegeben...
 

rolle

Guru
Tja, Glauben ist eben nicht Wissen. Ich bin jetzt hier am Ende meines Lateins, was den Apachen angeht. :?
 
OP
Nicmoe

Nicmoe

Member
ich habs jetzt!!!(ohne handbuch!!!)
es lag einfach daran, dass der server die dateiendungen nicht kannte und so nicht als gültige indizes anerkannte. das ganze kann man ändern indem man in /etc/apache2/httpd.conf nach index sucht. irgendwann bekommt man dann so eine liste von dateinamen wie index.html o.ä. und da schreibt man einfach noch php und was weis ich alles noch dazu.
 
Oben