Thread Best practice zu Dateiberechtigungen (21 answers)
Opened by bianca at 2020-04-03 09:39

haj
 2020-04-04 17:35
#191698 #191698
User since
2015-01-07
527 Artikel
BenutzerIn

user image
2020-04-04T14:39:15 bianca
Es kommt immer permission denied. Und in der Kontrollausgabe print "Datei '$dateiname' mit $datber" sehe ich dann sowas: Datei '/home/abc/xyz/testverzeichnis2/testdatei1.txt' mit 384
Wo kommt dieses "384" her? Das ist doch gar nicht im Array vorhanden!? Was ist denn da an meiner Syntax falsch?

Du bist da wieder den Oktalzahlen aufgesessen. Wenn Du die "richtig" lesen willst, dann brauchst Du printf mit dem %o-Format:

Code: (dl )
perl -E 'printf "%04o",384'
Code: (dl )
0600

Lass' Dein Skript mal ausgeben, wem Deine Dateien gehören (uid / gid) und unter welcher Benutzer- und Gruppenkennung Deine Skripte laufen. Das sind jeweils Nummern - die tatsächlichen Login- und Gruppennamen sind nur Dekoration.

An die Nummern für die Dateien kommst Du mit Perldoc:perlfunc stat, an die zum Prozess mit den Variablen $> und $).

Und auch die Maske kannst Du Dir mit Perldoc:perlfunc umask anschauen - hier auch wieder das Oktalformat bei der Ausgabe verwenden! Wenn die nämlich allzu strikt ist, dann kannst Du bei sysopen angeben, was Du willst, und es wird nix.

Wenn Du allerdings beim sysopen schon Fehler bekommst, dann darfst Du die Datei schon gar nicht anlegen - es fehlt die Schreibberechtigung im Verzeichnis. Auch die kannst Du mit stat für das Verzeichnis sehen und im Oktalformat ausgeben, dann gegebenenfalls mit Perldoc:perlfunc chmod ändern.

View full thread Best practice zu Dateiberechtigungen