Veröffentlicht 15. Mai 200916 j 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
15. Mai 200916 j 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 200916 j von bigvic
15. Mai 200916 j Alternativ sollte bei deinem Quelltext ein ... $oldstat = oct($oldstat); nach # Als Oktalzahl interpretieren my $oldstat = sprintf("%04o", $stat & 07777); ausreichen
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.