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

bianca
 2020-04-06 08:09
#191703 #191703
User since
2009-09-13
6827 articles
BenutzerIn

user image
Das heißt, du würdest sysopen und mkdir ohne Angabe der Berechtigungen nutzen? Würde in diesem Fall bedeuten, dass Dateien 0660 bekommen. OK das ginge.

Aber wie genau ist das jetzt mit umask? Was macht das genau? Wofür genau hatte ich die ganzen Id's ermittelt?

Wie komme ich denn jetzt zu einem Script, dass diese ganzen Schritte für mich macht?
Damit kein Missverständnis entsteht: ich möchte nicht wissen, welche Berechtigungen aktuell bei einem Provider benutzt werden können (das könnte ich durch Ausprobieren per FTP erreichen) sondern ich möchte generell ein Script zur immer-wieder-Verwendung bauen, dass das für mich übernimmt.

Also: Hoster im Netz suchen -> Testaccount machen -> Script hochladen und aufrufen -> Berechtigungen ablesen -> Werte in die Konfig des Projekts schreiben damit alle sysopen's und mkdir's ihre Werte bekommen.

Mein Versuch war, in einer Schleife beginnend bei den geringsten Berechtigungen so lange hoch zu gehen, bis es funktioniert. Und irgend wie bin ich davon jetzt wieder weiter entfernt als ich schon mal war :)

Kann mit bitte jemand sagen, wie die Syntax für sysopen lauten muss, wenn ich die Berechtigung aus einer Variable beziehe. if (sysopen my $dath,$dateiname,O_RDWR|O_EXCL|O_CREAT,$datber) {...} geht ja nicht. Aber wie muss in dieser Zeile der Parameter $datber richtig lauten, damit die Datei z. B. mit 755 angelegt wird?

Mit dieser Zeile hier: my @berechttest = (0644,0755);foreach my $test (@berechttest){sysopen my $fh,"$ENV{DOCUMENT_ROOT}/test$test.txt",O_RDWR|O_EXCL|O_CREAT,$test;} bekommen die Dateien 0640 und 0750, wenn ich das per FTP anschaue. Warum? Warum nicht 0644 und 0755?
In den Dateinamen steht 420 und 493. Warum? Wieso macht Perl aus 0644 im String eine ganz andere Zahl? Ist das allein wegen der führenden Null in der Definition? Hat das seine Richtigkeit? Ist das in anderen Sprachen auch so? Ich bin darüber eigentlich ziemlich erschrocken, was man im Dezimalsystem mit einer führenden Null anrichten kann.

Mit my @berechttest = ('0644','0755');foreach my $test (@berechttest){sysopen my $fh,"$ENV{DOCUMENT_ROOT}/test$test.txt",O_RDWR|O_EXCL|O_CREAT,$test;} bekommen sie S200 und S360??

Und mit my @berechttest = ('0644','0755');foreach my $test (@berechttest){sysopen my $fh,"$ENV{DOCUMENT_ROOT}/test$test.txt",O_RDWR|O_EXCL|O_CREAT,sprintf("%04o",$test);} kommt G260 und G520 raus. Für mich wird das immer schlimmer.

Bitte um Aufklärungshilfe. Ich kapiere das nicht.
10 print "Hallo"
20 goto 10

View full thread Best practice zu Dateiberechtigungen