fopen permissions problem

PH

Legendäres Mitglied
Hallo, ich verwende ISPConfig 3 und versuche, per PHP Script den email autoresponder zu ändern.

Dafür muss ich eigentlich nur die .vacation.msg Datei ändern unter
/var/vmail/mailfilters/domain/mailaccount/.vacation.msg

ich habe das Verzeichnis und die Datei mit Permissions 777 versehen, sowie auch das Verzeichnis im PHP openbasedir hinzugefügt.

Dennoch:
Warning: fopen(/var/vmail/mailfilters/domain/mailaccount/.vacation.msg) [function.fopen]: failed to open stream: Permission denied in /var/www/clients/client2/web7/web/change_autoresponder.php on line 3

hier das Script:

CODE
<?php
$myFile = "/var/vmail/mailfilters/domain/mailaccount/.vacation.msg";
$fh = fopen($myFile,'w') or die("can't open file");

$body = "Test line 1\n";
$body .= "Test line 2\n\n";
$body .= "Test line 3\n";
$body .= "Test line 4\n";

fwrite($fh, $body);
fclose($fh);
?>



ich reiss mir gleich die Haare aus.
weiss jemand weiter?
 
Hallo PH,

kannst Du bitte mal die Berechtigung auch posten (ls -lha)?

Darfst Du mit dem zugreifenden Benutzer in das Verzeichnis wechseln? Also mit dem Benutzer dem das Script gestartet wird, bzw. der Webserver läuft.
CODE su Benutzername
cd /var/vmail/mailfilters/domain/mailaccount/.vacation.msg



Gruß,
Sascha
 
Das Verzeichnis hat die Permissions drwxrwxrwx

Die Datei -rwxrwxrwx


ok, der Webserver läuft unter User www-data, und dieser User darf nicht in das Verzeichnis.
Danke Sasha, wieder was gelernt!


Was kann ich unternehmen, damit das Script seinen Job machen kann?
 
Du musst dafür sorgen, dass der Benutzer durch die Berechtigungsstruktur der Verzeichnisse darf, dass heißt du müsstest den Verzeichnis für Verzeichnis durchlassen, entweder indem Du jeden das Ausführen erlaubst, oder indem Du die Gruppe auf die Ordner berechtigst. Alternative könntest Du ggf. auch den Ordner für den Mailfilter umbiegen.
Fall's Du Dir aber sagst, das möchte ich in dieser Form nicht, kannst Du auch einen cronjob einrichten, der diese Daten kopiert. Zum Beispiel schreibst Du Sie erst in eine Datenbank und lässt alle 60 min (oder auch 15 min oder 5 min) die Datei dann von einen anderen Script in das Verzeichnis schreiben, welches mit der Berechtigung des entsprechenden Benutzers ausgeführt werden kann.

Eine universal Lösung gibt es hier nicht, da ich nicht genau weiß, wie Dein Server aufgebaut ist, und wo dort ggf. Sicherheitslöcher entstehen kann.
 
ich habe versucht, für das Verzeichnis und die Datei die Usergroup www-data einzustellen, aber die Fehlermeldung kommt nach wie vor.

Ich probiers jetzt mal mit CRON.
 
QUOTE (PH @ Sa 5.03.2011, 10:10) ich habe versucht, für das Verzeichnis und die Datei die Usergroup www-data einzustellen, aber die Fehlermeldung kommt nach wie vor.
[...]

Ich glaube, Du verstehst das nicht ganz, es muss nicht nur das Verzeichnis sein, sondern Du musst durch jedes Verzeichnis auf den Weg dahin zugreifen dürfen.

BTW sind irgendwelche Mechanismen zur Absicherung des Linux aktiv, wie SELinux oder grsecurity?
 
ich werde es definitv mit CRON probieren, statt mit den Verzeichnis-Rechten "rumzualbern", da riskiere ich ja, das System zu zerschiessen.

GRsec und Selinux sind nicht aktiv, nur Suhoshin, aber das ist ja für PHP
 
Zurück
Oben