Wenn wir die Inhaberschaft von site1 überprüfen, werden wir so etwas finden,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Dies bedeutet, dass das Verzeichnis dem Benutzer root und der Gruppe root gehört. Während der Benutzer root über Schreibrechte (plus Lese- und Ausführungsrechte) für das Verzeichnis verfügt, hat der Gruppenstamm nur Lese- und Ausführungsrechte.
Wir möchten den Gruppeneigentum in eine andere (neue) Gruppe ändern und Benutzer1 zu dieser bestimmten Gruppe hinzufügen. Wir werden auch dieser bestimmten Gruppe eine schriftliche Erlaubnis erteilen.
Erstelle eine neue Gruppe,
sudo addgroup site1
Fügen Sie der neu erstellten Gruppe user1 hinzu.
sudo adduser user1 site1
Überprüfen Sie, ob Benutzer1 wirklich zu dieser Gruppe gehört.
groups user1
Die Ausgabe sollte so etwas wie eine Liste sein,
user1 : <other-groups> site1
Jetzt können wir den Gruppeneigentum Ihres gewünschten Verzeichnisses ändern.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Erteilen Sie diesem neuen Gruppeninhaber eine Schreibberechtigung.
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Überprüfen Sie, ob alle Änderungen vorhanden sind.
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Das Verzeichnis gehört jetzt dem Benutzer root, Gruppe site1. Sowohl der Benutzer root als auch die Gruppe site1 haben Schreibrechte (plus Lese- und Ausführungsrechte) für das Verzeichnis. Jeder Benutzer, der zur Gruppe site1 gehört, verfügt über alle Berechtigungen, die dieser Gruppe gewährt wurden.
Melden Sie sich jetzt als Benutzer1 an, wechseln Sie in das Verzeichnis Site1 und versuchen Sie, eine Datei in diesem Verzeichnis zu erstellen.
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Dies ist fehlgeschlagen, da die primäre Gruppe von Benutzer1 höchstwahrscheinlich nicht Standort1 ist. Wechseln Sie zu dieser Gruppe.
newgrp - site1
Versuchen Sie, die Datei neu zu erstellen (achten Sie darauf, dass Sie nach dem Ändern der Gruppe in das Ausgangsverzeichnis von Benutzer1 verschoben wurden). Dies sollte nun funktionieren. Da die erstellten Dateien über eine Leseberechtigung für die ganze Welt verfügen, sollte es für Apache (oder Ihren Webserver) kein Problem geben, auf sie zuzugreifen.
BEARBEITEN
Wie im Kommentar von dan08 erwähnt , müssen Sie der Gruppe site1 auch WWW-Daten hinzufügen.
sudo adduser www-data site1
Bei vielen (nicht allen) Distributionen ist www-data der Benutzer, unter dem der Apache-Webserver ausgeführt wird. Dies bedeutet auch, dass alle von Apache ausgeführten Aktionen (insbesondere PHP-Skripte) standardmäßig mit den Berechtigungen des Benutzers www-data (und auch der Gruppe www-data) ausgeführt werden. WordPress verwendet die Benutzer-WWW-Daten, um Dateien zu schreiben.
Wenn Sie sehen möchten, wie der Apache-Webserver ausgeführt wird, geben Sie den folgenden Befehl ein:
ps aux | grep apache2 | less