Fügen Sie sich zunächst der Gruppe hinzu www-data
usermod -a -G www-data (your username)
Dann:
chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA
Sollte den Trick machen, es sei denn, die Berechtigungen auf Ihrem /home/myuser
Computer erlauben anderen Benutzern keinen Zugriff.
Der erste Befehl ändert den Gruppeneigentum des Ordners in den des Webservers. Mit dem zweiten Befehl erhalten die Mitglieder der www-data
Gruppe Lese-, Schreib- und Zugriffsrechte für Verzeichnisse. Mit dem Gruppenflag s
wird sichergestellt, dass alle Dateien, die innerhalb dieses Verzeichnisses erstellt werden, www-data
als Gruppe gelten. Wenn Sie also eine Datei erstellen, hat myuser
der www-data
Benutzer Zugriff.
Nb. Dies hängt auch von den umask
Einstellungen Ihres Benutzerkontos und des Webservers ab: Sie müssen sicherstellen, dass in folderA erstellte Dateien Gruppenzugriff haben rw
(und Verzeichnisse, die innerhalb von need group erstellt wurden rwx
).
Wenn Ihr Webserver keine Zugriffsrechte in Ihr /home/myuser
Verzeichnis hat (ziemlich vernünftig), wird er nicht in dieses Verzeichnis gelangen, es sei denn, Sie tun etwas anderes. Zwei Lösungen:
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(Dies ist ein hässlicher Hack und müsste nach dem Neustart wiederholt werden. Aber ein mächtiger Trick, der auch verwendet werden kann, um Ordner in SSH-Jails zugänglich zu machen.)
Verschieben Sie den freigegebenen Ordner einfach an einen anderen Ort, z /home/shared-stuff/folderA
.
Die 2. Option ist am nettesten. Nehmen wir an, das Zeug in Ordner A ist wirklich öffentlich und es ist dir egal, wer es sieht, du kannst es so einrichten
sudo mkdir -m777 /home/shared-stuff
Dann können Sie beispielsweise Ordner A mit den oben genannten Berechtigungen und Ordner B, auf die WWW-Daten keinen Zugriff haben sollen, mit unterschiedlichen Berechtigungen einfügen, z
$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data 4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser 4096 Jan 17 21:46 folderB
s
ing+rwxs
?