%20kann%20immer%20noch%20keine%20Dateien%20lesen.png)
Mein PHP-Skript benötigt Zugriff auf einige Dateien, die in einem ganz anderen Verzeichnis liegen.
Ich habe die ACL so eingestellt, dass der WWW-Data-Benutzer Leseberechtigung hat, aber die PHP-Funktion file_get_contets() gibt die Fehlermeldung „Zugriff verweigert“ zurück.
Dies funktioniert nur, wenn ich den Benutzer oder die Gruppe „www.data“ für dieses Verzeichnis festlege. Dies möchte ich jedoch nicht tun, es sei denn, die ACLs wirken sich nicht auf Programme aus, die unter festgelegten Benutzern ausgeführt werden, und das Festlegen der Eigentümerschaft ist die einzige Möglichkeit, dies zu tun.
ACL-Liste:
# owner: user1
# group: group1
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:www-data:rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---
Dank im Voraus
Antwort1
Ihre Ausgabe zeigt, dass Sie die „Standard“-ACL (vererbbar) für das Verzeichnis festgelegt haben, aber nicht die „normale“ (wirksame) ACL. Mit anderen Worten, die Einträge mit dem Präfix default:
existieren nur zum Kopieren in neu erstellte Dateien, aber sienichtsofort auf dieses Verzeichnis selbst anwenden.
Die einzigen wirksamen Berechtigungen sind also diese, und der einzige ACE, der mit den Benutzern „www-data“ und „user2“ übereinstimmt, ist der allgemeine other::---
Eintrag, der überhaupt keine Berechtigung erteilt:
# Besitzer: Benutzer1 # Gruppe: Gruppe1 # Flaggen: -s- Benutzer::rwx Gruppe::rwx andere::---
Da „www-data“ mit keinem ACE übereinstimmt, der die Berechtigung +x (Durchqueren) für das Verzeichnis erteilen würde, ist der Zugriff auf darin enthaltene Dateien nicht gestattet, unabhängig von deren eigenen Berechtigungen.
Um dies zu beheben, legen Sie die ACLs erneut fest, dieses Mal ohne das Flag „Standard“ hinzuzufügen:
setfacl -m "u:www-data:rwx" the_directory