Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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

You made my day! - Dankeschön :D

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.