Thread Problem mit Schreibrechten (chmod) (12 answers)
Opened by oruebe at 2004-12-29 21:02

cbxk1xg
 2004-12-29 21:30
#3953 #3953
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Das Problem liegt vermutlich bei den Benutzerrechten. Dein Script läuft unter einem eigenen Benutzernamen. Der Benutzername für das FTP-Login ist wieder ein anderer. Damit nun nicht jeder einfach wild Dateien von anderen Benutzern ändern kann, darf auch nur der Benutzer die Datei ändern, der sie erstellt hat.

Ich kenne das Problem von diversen Providern (z.B. Hosteurope). Bei Hosteurope laufen Skripte immer unter dem Beutzernamen "nobody". Meiner Meinung nach ist es bei Webhostingpaketen allerdings kein Feature, sondern ein Bug.

Versuch einfach mal rauszufinden unter welchem Benutzernamen deine Scripte laufen.

Als Lösungsansatz (quick & dirty) könntest du folgendes probieren: Angenommen deine Zieldatei befindet sich in dem String $target und Du hast Leserechte auf die Datei. Dann kopierst Du die Datei und löschst die alte. Danach bennenst du die neue Datei um und alles ist schön. Das geht aber nur wenn Du auch löschen darfst.
Code: (dl )
1
2
3
4
5
6
7
8
use File::Copy qw(cp);
open(FILE, ">$target")
or do {
cp "$target", "$target~temp1";
unlink "$target";
rename "$target~temp1", "$target";
};
close( FILE );


Es gibt bei diesem Workarround allerdings noch ein paar Probleme. Wenn Du mit zwei Skripten rumwerkelst dann solltest Du unbedingt Flock benutzen. Sonst wirst Du irgendwann Probleme mit Zugriff auf die Datei bekommen. Außerdem solltest Du den Workarround bei dem zweiten Skript verändern indem Du temp1 durch temp2 ersetzt. Sonst könnte das zweite Skript eventuell zeitgleich auf eine Datei zugreifen, wo es gerade etwas unpassend ist.

View full thread Problem mit Schreibrechten (chmod)