Alte Berechtigung auslesen, ändern und wieder setzen (chmod)
JayBee
- perl
0 JayBee
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?
mfg, JB
Lösung:
chmod(oct($oldstat),$file) || print $!;
$oldstat muss erst wieder octal gesetzt werden. Dann gehts. Trotzdem danke an euch.