
Das ist bestimmt eine einfache Frage, aber ich kann scheinbar keinen Grund finden, warum es nicht funktioniert.
Ich versuche, Gruppenordner im Webstammverzeichnis für einen PHP-Server einzurichten. Jede Abteilung sollte eine Gruppe wie diese haben:
/srv/www/htdocs/dev/dept1
/srv/www/htdocs/dev/dept2
Alle Benutzer in der Gruppe „dept1“ sollten Lese-/Schreibzugriff auf den Ordner „dept1“ haben, alle Benutzer in „dept2“ sollten Lese-/Schreibzugriff auf den Ordner „dept2“ haben usw. Beim Versuch, dies umzusetzen, habe ich eine Gruppe wie diese erstellt:
sudo groupadd dept1
sudo useradd -G dept1 -m user1
cd /srv/www/htdocs/dev
mkdir dept1
sudo chown -R wwwrun:dept1 dept1
sudo chmod -R g+rwxs dept1
wwwrun
ist der Benutzer, unter dem Apache ausgeführt wird. Die Idee ist, dass Benutzer in ihrem Abteilungsordner alles erstellen/lesen/aktualisieren/löschen können, was sie möchten. Beim Ausprobieren kann das Benutzerkonto jedoch den Inhalt des Ordners anzeigen und Dateien lesen, aber keine Dateien erstellen oder schreiben.
Was mache ich falsch?
Antwort1
Mit den von Ihnen erteilten Berechtigungen dept1
können Benutzer in der Gruppe Dateien erstellen und löschen /srv/www/htdocs/dev/dept1
. In typischen Konfigurationen sind die von ihnen erstellten Dateien und Unterverzeichnisse jedoch nicht für die Gruppe beschreibbar.
Sie können die meisten Dateien für die Gruppe beschreibbar machen, indem Sie dieumaskEinstellung. Die umask-Einstellung bestimmt, welche Berechtigungennichtneuen Dateien zugewiesen. Normalerweise ist es auf 022 eingestellt, was bedeutet, dass Dateien nicht von der Gruppe oder anderen beschreibbar sind, sofern dies nicht ausdrücklich festgelegt wurde. Sie können dies auf 002 ändern, sodass Dateien standardmäßig von der Gruppe beschreibbar sind. Dies ist jedoch nur sinnvoll, wenn jeder Benutzer seine eigene private Gruppe hat (sonst wären die Dateien der Benutzer für jeden in ihrer primären Gruppe beschreibbar).
Eine bessere Lösung besteht darin, sicherzustellen, dassZugriffskontrolllistensind auf dem Dateisystem aktiviert, auf dem /srv/www/htdocs/dev
es sich befindet (stellen Sie sicher, dass der fstab
Eintrag acl
in der vierten Spalte enthält). Erstellen Sie dann eine ACL, um srv/www/htdocs/dev/dept1
der dept1
Gruppe Schreibberechtigung für das Verzeichnis zu erteilen und diese Berechtigungserteilung an neu erstellte Einträge im Verzeichnis zu vererben. Dies ähnelt einer Umask-Änderung, ist jedoch an diesen bestimmten Speicherort im Dateisystem gebunden. Nachdem Sie die folgenden beiden Befehle ausgeführt haben, sind die Berechtigungen in allen typischen Anwendungsfällen korrekt.
setfacl -R -m group:dept1:rwx /srv/www/htdocs/dev/dept1
setfacl -R -d -m group:dept1:rwx /srv/www/htdocs/dev/dept1
Antwort2
Wie greifen Ihre Benutzer auf die Dateien zu? Wie versuchen sie, sie zu aktualisieren/erstellen? Ich gehe davon aus, dass sie sich beim Server anmelden. Lassen Sie sie den Befehl „Gruppen“ ausführen, um sicherzustellen, dass sie sich tatsächlich in der richtigen Gruppe befinden und diese zuerst aufgeführt werden sollte.