Zum Inhalt springen

(PERL) Alte Berechtigung auslesen, ändern und wieder setzen (chmod)


Empfohlene Beiträge

Geschrieben

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

Geschrieben (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 von bigvic
Geschrieben

Alternativ sollte bei deinem Quelltext ein ...

$oldstat = oct($oldstat);

nach

# Als Oktalzahl interpretieren

my $oldstat = sprintf("%04o", $stat & 07777);

ausreichen ;)

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...