Wenn keine Dateien lesbar wären, würde glob() ein leeres Ergebis bringen. Da aber Dateien gefunden werden, aus denen auch der Zeitstempel extrahiert werden können (durch das Echo "Daten mit dem Zeitstempel..." bewiesen), ist der Lesezugriff durch PHP schonmal gewährleistet
Nein. Dir hat noch niemand die Sache mit den Unix-Rechtem richtig erklärt. Ich nehm statt glob() mal ls.
Es sei das Verzeichnis "ver", Rechte wie folgt:
user~ ls -ld ver
drwxr-xr-x 2 user group 4096 Nov 21 09:47 ver
Darin die Dateien "keine", "lesen", "lesen+schreiben", "lesen+execute". Inhalt ist jeweils gelesen\n
Wir machen damit mal "ls -l":
user$ ls -l ver
-rw-r----- 1 user group 8 Nov 21 09:50 keine
-rw-r--r-- 1 user group 8 Nov 21 09:48 lesen
-rwxr-xr-x 1 user group 8 Nov 21 09:49 lesen+execute
-rw-rw-rw- 1 user group 8 Nov 21 09:49 lesen+schreiben
Und sehen jetzt mal nach, ob der www-data das Verzeichnis und dann die Dateien lesen kann
Zuerst werden wir mal 'www-data', was eine kleine Vorbereitung erfordert, die Ihr zu Hause bitte nicht nachmacht:
user$ su
root# usermod -s www-data /bin/bash
root# su www-data
Und dann:
www-data$ ls -l
-rw-r----- 1 user group 8 Nov 21 09:50 keine
-rw-r--r-- 1 user group 8 Nov 21 09:48 lesen
-rwxr-xr-x 1 user group 8 Nov 21 09:49 lesen+execute
-rw-rw-rw- 1 user group 8 Nov 21 09:49 lesen+schreiben
www-data$ for file in `ls`; do echo "${file}:"; cat $file; done
keine:
cat: keine: Keine Berechtigung
lesen:
gelesen
lesen+execute:
gelesen
lesen+schreiben:
gelesen
Fazit:
- Für glob() (ls benutzt, wie das glob() von PHP, glob aus der C-Lib) muss man Leserechte am Verzeichnis haben.
- Um den Dateiinhalt lesen zu können muss man Leserechte an der Datei haben. Beides hat niteinander nichts zu tun.
Wer meine obige Warnung überging darf Folgendes nicht vergessen:
www-data$ exit
root# usermod -s /usr/sbin/nologin www-data
exit