1 2 3 4 5
open( my $handle, '>', $file ) or die "open($file,w) failed: $!"; print $handle "Dein Text" or die "print to $file failed: $!"; close $handle or die "close $file failed: $!";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Sagen wir, dem Benutzer "helmut" gehört die Verzeichnis-Struktur unter /var/www/example.org
# Alle Verzeichnisse darin gehören diesem Benutzer und auch der Gruppe "helmut"
# Der Webserver laufe hier als Benutzer "www-run"
# und darin soll der Webserver in ein eigenes Logverzeichnis schreiben dürfen:
# Als "helmut" das Verzeichnis anlegen
mkdir -p /var/www/example.org/scriptlog
# 1. Variante; das neue Verzeichnis gehört "helmut" und der Gruppe "helmut"
# "alle anderen" erhalten Schreibrechte auf das Verzeichnis, darunter fällt dann auch der Webserver-Benutzer (s.u.)
chmod o+w /var/www/example.org/scriptlog
2. Variante; das Vezeichnis soll dem Benutzer des Webservers gehören und die Benutzer der Gruppe "helmut" sollen darin lesen dürfen
# als root:
chown www-run:helmut /var/www/example.org/scriptlog
chmod u+w,g-w+r,o-rwx /var/www/example.org/scriptlog
Merkhilfe:
u => User: Der Benutzer, dem die Datei/das Verzeichnis gehört
g => Group: Die Gruppe, die zusätzlich "Besitzanspruch" hat
o => Others: Alle anderen im System (alle, die nicht Besitzer der Datei sind und auch nicht der besitzenden Gruppe angehören)
mit + und - gibt oder nimmt man Rechte:
w = write => Schreibrechte
r = read => Leserechte
x = execute => Ausführenrechte (bei Verzeichnissen das Recht, ins Verzeichnis zu wechseln)
1 2
my $fn = "/path/to/file"; open(my $fh, ">", $fn) or die "Fehler beim Öffnen von $fn: $!";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my $docroot; my $scriptpath; BEGIN { use FindBin::Bin qw($Bin); $scriptpath = $Bin; $docroot = $ENV{DOCUMENT_ROOT}; } #… # dein Code # ### je nach dem wo die Datei liegen soll, innerhalb des CGI-Pfades oder unterhalb docroot my $filename = "$docroot/datein1"; ### oder in ein Unterverteichnis unterhalb des Skripts #my $filename = "$scriptpath/data/datein1";