Gast JulianB Geschrieben 15. Mai 2009 Geschrieben 15. Mai 2009 Hi, ich möchte von bestimmten Dateien die Berechtigungen: 1. Auslesen & in Variable speichern 2. Berechtigung auf Schreibbar ändern 3. Alte gespeicherte Berechtigung wieder zurücksetzen Das gehe ich bisher so an: # Dateiattribute auslesen my $stat = (stat($filename))[2]; # Als Oktalzahl interpretieren my $oldstat = sprintf("%04o", $stat & 07777); # Vollzugriff auf Datei setzen chmod(0666, $filename); &do_something(); # Alte Rechte zurücksetzen chmod($oldstat, $filename); Funktioniert soweit bestens _außer_ das Zurücksetzen der Berechtigungen am Ende. Die Dateien bleiben bei jedem Durchgang schreibbar, was sie nicht sollen. Da ich aber nie genau weiß welche Berechtigungen welche Datei hat, wollte ich es so lösen das ich die alten Berechtigungen oktal in $oldstat speichere und diese am Ende wieder "zurücksetze". Wo ist mein Fehler? Vielen Dank für eure Hilfe, LG JulianB
bigvic Geschrieben 15. Mai 2009 Geschrieben 15. Mai 2009 (bearbeitet) Hi, chmod mit oct als Parameter. Siehe hier. my $perm="0666"; # Dateiattribute auslesen my $stat = (stat($filename))[2]; # Als Oktalzahl interpretieren my $oldstat = sprintf("%04o", $stat & 07777); # Vollzugriff auf Datei setzen chmod oct($perm), $filename; &do_something(); # Alte Rechte zurücksetzen chmod oct($oldstat), $filename; Kurz zur Erklärung: # Alte Rechte zurücksetzen chmod($oldstat, $filename); Da wird $oldstat nicht als Oktalzahl interpretiert. # Vollzugriff auf Datei setzen chmod(0666, $filename); Hier schon, deshalb klappts. ciao, vic Bearbeitet 15. Mai 2009 von bigvic
bigvic Geschrieben 15. Mai 2009 Geschrieben 15. Mai 2009 Alternativ sollte bei deinem Quelltext ein ... $oldstat = oct($oldstat); nach # Als Oktalzahl interpretieren my $oldstat = sprintf("%04o", $stat & 07777); ausreichen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden