Perl: Rechte einer Datei unter Unix ändern

Hi!

Ich möchte die Rechte einer Datei (normalerweise mit dem Unix-Befehl chmod) automatisch mit Perl ändern. Wie heißt der dazu gehörige Perl-Befehl. Ich habe es mit

$datei = ‚detail.txt‘;
chmod 0777, $datei;

versucht. Leider jedoch ohne Erfolg.

Wie muß der Befehl lauten?

Vielen Dank

Michael

Ich möchte die Rechte einer Datei (normalerweise mit dem
Unix-Befehl chmod) automatisch mit Perl ändern. Wie heißt der
dazu gehörige Perl-Befehl. Ich habe es mit

$datei = ‚detail.txt‘;
chmod 0777, $datei;

Der Befehl ist richtig (siehe perldoc -f chmod), aber ob die ausführende Instanz die Berechtigung besitzt die Dateirechte (rwx für user, group und world) so hoch zu setzen wage ich zu bezweifeln.

Klaus

Was soll ich denn jetzt machen?

Gibt es vielleicht die Möglichkeit, beim Anlegen einer Datei die Rechte festzusetzen? Oder wie kann ich sie sonst im Nachhinein ändern?

Vielen Dank
Michael

Gibt es vielleicht die Möglichkeit, beim Anlegen einer Datei
die Rechte festzusetzen? Oder wie kann ich sie sonst im
Nachhinein ändern?

Frage 1: Müssen die Rechte wirklich so hoch gesetzt werden?
Frage 2: Da es sich offensichtlich um eine Text-Datei handelt, muss sie wirklich „execute“ Rechte erhalten?

Anmerkung: Die Datei erbt bei ihrer Erzeugung die Rechte des aufrufenden Users, das sollte im Normalfall eigentlich langen, ausser Du willst execute Rechte setzen oder ein nettes Sicherheitsloch produzieren.

Eine Möglichkeit das zu umgehen ist einen Wrapper zu schreiben, der mit Root Rechten versehen das Perl Programm ausführt, aber davon würde ich abraten, wegen o.g. Sicherheitsprobleme.

Klaus

Ich will mich nicht über Sicherheitslöcher auslassen, sondern deine Frage beantworten: Allgemein gilt, daß nur der etwas an einer Datei ändern kann (auch die Attribute) dem die Datei gehört (der user oder die user-gruppe).

D.h. wenn dein cgi-skript eine datei selbst! erstellt, kann es auch jederzeit die Rechte ändern (auch andere Skripte die unter derselben Benutzerkennung laufen können das).

Hast du jedoch per ftp eine datei hochgeladen hat sie deine Benutzerkennung. Wenn nun ein Skript läuft hat es eine andere Kennung und produziert beim Rechte umsetzten einen Fehler.

Das kannst du vermeiden indem du für alle Lese und Schreibrechte auf der Kommandozeile! vergibst. Alternativ kannst du auch dein FTP-Programm dafür benutzen. Ich hoffe ich habe dir geholfen.

PS. Das kommando zum Ändern der Rechte einer Datei/Verz:

chmod O777, "datei"; #das ist ein O wie Otto, keine Null!
oder
chmod oct("777"), "datei";

cu, holli