PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechte an Dateien für Apache



zielscheibe
17.05.06, 14:04
Hallo NG!

Ich habe ein kleines Problem mit meinem Apache.
(Der Rechner steht im lokalen Netz und ich habe
root Rechte)
Über ein cgi-Skript (perl) versuche ich eine Datei
zu ändern und eine nadere zu löschen. Aber ich bekomme
immer Zugriffsfehler! Die 2 Dateien befinden sich
unter /var/www/cgi-bin/ und selbst wenn ich
die Dateien chown apache:apache und noch
chmod 777 setze, bekomme ich keinen Zugriff.
Warum geht das nicht :confused:

jac
17.05.06, 15:27
Poste mal die genaue Fehlerausgabe!

ansonsten:
- Skript mal direkt aus der Shell aufrufen (-> Fehlerausgabe ?!)
- Skript(e) posten

dann schaun wir mal weiter ...

Gruß JAC

zielscheibe
17.05.06, 15:52
Poste mal die genaue Fehlerausgabe!

Die Fehlermeldung bringt nicht viel: permission denied




- Skript mal direkt aus der Shell aufrufen (-> Fehlerausgabe ?!)

"su - apache" geht nicht, da apache keine login shell hat, somit
kann ich das Skript so nicht starten.
Als root funktioniert es tadelos



- Skript(e) posten
Das Skript geht ja als root, das ist nicht das Problem.
Es handelt sich um den Befehl
unlink ("$pfad$datei") or die "das ist ein toller Fehler $!"

Gibt es eine Möglichkeit dem Webserver zu sagen welche
Zugriffsrechte er hat? Unter /etc/httpd/conf/httpd.conf hab ich
nix gefunden.

MfG

jac
17.05.06, 20:12
Hast Du die Rechte für das cgi-bin Verzeichnis und das Skript selber auch richtig gesetzt? Was steht denn im Errorlog vom Apache?
Ist der Skript Alias in der httpd.conf richtig gesetzt?

ScriptAlias /cgi-bin/ "/pfadzu/cgi-bin/"
und

<Directory "/pfadzu/cgi-bin">
...
Options +ExecCGI
...
</Directory>


btw: Skripte unter anderem User kannst du mit

# sudo -u USERNAME /pfadzumskript/skriptnameausführen. Ein -H setzt noch die Umgebungsvariablen für den user (siehe auch man sudo)

Gruß JAC

zielscheibe
18.05.06, 09:06
Was steht denn im Errorlog vom Apache?

...Permission denied...



Ist der Skript Alias in der httpd.conf richtig gesetzt?

ScriptAlias /cgi-bin/ "/pfadzu/cgi-bin/"

Ausführen funktioniert ja, das Script macht DB Abfragen usw.
Ich kann es nur nicht dazu bringen Dateien in /var/www/cgi-bin/
zu löschen!




<Directory "/pfadzu/cgi-bin">
...
Options +ExecCGI
...
</Directory>


Das +ExecCGI war nicht angegeben, sondern da stand "options none".
Habe es eingefügt und den Apache neugestartet, ändert aber nichts daran.





# sudo -u USERNAME /pfadzumskript/skriptname

Das mit dem -u Parameter wußte ich noch gar nicht. Danke :)
Bringt aber leider trotzdem nix! Auch dort bekomme ich als Antwort
permission denied.

marce
18.05.06, 09:30
Poste die Fehlermeldung bitte komplett und Wort für Wort...

Wie sehen denn die Rechte der Dateien und Verzeichnisse konkret aus?

Und evtl. wäre es auch mal sinnvoll, das Script zu posten - vielleicht liegt der Fehler ja da drin?

zielscheibe
18.05.06, 10:56
Poste die Fehlermeldung bitte komplett und Wort für Wort...

konnte /var/www/cgi-bin/news-atom.xml nicht loeschen Permission denied at /var/www/cgi-bin/newsticker.cgi line 14.



Wie sehen denn die Rechte der Dateien und Verzeichnisse konkret aus?

Die Datei steht auf 777 also "rwxrwxrwx" und der Eigentümer ist Apache.
An den Rechten von Ordner /var/www/cgi-bin/ habe ich nix
geändert. Wundert mich jetzt aber, daß root der Eigentümer ist ¿¿¿



Und evtl. wäre es auch mal sinnvoll, das Script zu posten - vielleicht liegt der Fehler ja da drin?



#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $pfad = "/var/www/cgi-bin/";
my $news = "news-atom.xml";

&holeDaten;
exit 0;

sub holeDaten
{
unlink ("$pfad$news") or die "konnte $news nicht loeschen $!";
system ("wget http://www.heise.de/security/news/news-atom.xml") == 0
or die "Konnte die $news nicht holen $!";
}

marce
18.05.06, 10:58
und wie sind die konkreten Rechte des Ordners?
Und unter welchen User läuft der Apache?

zielscheibe
18.05.06, 11:53
und wie sind die konkreten Rechte des Ordners?
Und unter welchen User läuft der Apache?



ls -lh /var/www
drwxr-xr-x 4 root root 4.0K May 18 11:42 cgi-bin
drwxr-xr-x 3 root root 4.0K Apr 3 14:40 error
drwxr-xr-x 4 root root 4.0K May 17 08:26 html
drwxr-xr-x 3 root root 4.0K Apr 6 14:25 icons
drwxr-xr-x 13 root root 4.0K Mar 16 08:43 manual
drwxr-xr-x 2 webalizer root 4.0K May 3 04:02 usage




ps -ef | grep httpd
root 23151 1 0 08:46 ? 00:00:00 /usr/sbin/httpd
apache 23154 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23155 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23156 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23157 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23158 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23159 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23160 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd
apache 23161 23151 0 08:46 ? 00:00:01 /usr/sbin/httpd


Liegt das jetzt am Schreibrecht für den Ordner???
Aber warum sollte ein Benuter kein Schreibrecht
auf seinen eigenes Verzeichnis haben ???

PigPen|tuX
18.05.06, 12:04
wieso haben die Dateien Root-Rechte ?

normaler Weise gehören die /var/www/...... dem Apache-User, also dem user der in der httpd.conf hinterlegt ist....

ich kann auch gerade nich nachvollziehen, warum 1 httd-Prozess mit root gestartet wurde und die anderen mit dem apache-user

deine Distri ?

thom

marce
18.05.06, 12:20
erstmal solltest Du dich fragen, warum ein User, der in ein VZ nicht schreiben darf darin keine Dateien löschen darf...

Ansonsten: der Vaterprozess wird als root gestartet, weil er sicht sonst nicht an Port 80 binden darf - erst die Kind-Prozesse laufen dann unter apache...

zielscheibe
18.05.06, 12:21
wieso haben die Dateien Root-Rechte ?
normaler Weise gehören die /var/www/...... dem Apache-User, also dem user der in der httpd.conf hinterlegt ist....

Kommt mir jetzt auch seltsam vor...




ich kann auch gerade nich nachvollziehen, warum 1 httd-Prozess mit root gestartet wurde und die anderen mit dem apache-user

siehe Beitrag eins höher ;)



deine Distri ?
Red Hat Enterprise Linux 4

MiGo
18.05.06, 12:26
drwxr-xr-x 4 root root 4.0K May 18 11:42 cgi-bin
Naja, die Rechte der zu löschenden Datei mögen 777 sein; das hilft dir aber nichts, wenn du im Verzeichnis keine Schreibrechte hast...


[ je@cthulhu] ~ (12G free) % ls delete/noname.jpg -l
-rw-rw-rw- 1 je je 573440 2006-05-08 15:54 delete/noname.jpg
[ je@cthulhu] ~ (12G free) % ls delete -dl
dr-xr-xr-x 2 je je 4096 2006-05-17 18:32 delete
[ je@cthulhu] ~ (12G free) % rm delete/noname.jpg
rm: Entfernen von »delete/noname.jpg« nicht möglich: Keine Berechtigung

zielscheibe
18.05.06, 13:37
Naja, die Rechte der zu löschenden Datei mögen 777 sein; das hilft dir aber nichts, wenn du im Verzeichnis keine Schreibrechte hast...

Du hast recht, das war das Problem :) DANKE
Habe "chown apache:apache /var/www/cgi-bin" gemacht
und jetzt funktioniert es!