Wie gebe ich www-data user einem Ordner in meinem Home-Ordner?

31

Ich habe einen Ordner: /home/myuser/folderA

Ich möchte dem Benutzer von www-data Schreibzugriff auf das oben Genannte gewähren, während 'myuser' weiterhin normalen Zugriff hat (da es sowieso der private Ordner von myuser ist).

Welche Befehle muss ich verwenden?

Hinweis: Ich möchte keinen www-dataZugriff auf andere Ordner in /home/myuser/.

Danke im Voraus.

nVerknüpft
quelle

Antworten:

46

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/myuserComputer 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-dataGruppe Lese-, Schreib- und Zugriffsrechte für Verzeichnisse. Mit dem Gruppenflag swird sichergestellt, dass alle Dateien, die innerhalb dieses Verzeichnisses erstellt werden, www-dataals Gruppe gelten. Wenn Sie also eine Datei erstellen, hat myuserder www-dataBenutzer Zugriff.

Nb. Dies hängt auch von den umaskEinstellungen 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/myuserVerzeichnis hat (ziemlich vernünftig), wird er nicht in dieses Verzeichnis gelangen, es sei denn, Sie tun etwas anderes. Zwei Lösungen:

  1. 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.)

  2. 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
Kunstvollroboter
quelle
Was ist sin g+rwxs?
T.Todua
"Klebrige Gruppe". Der Effekt wird in Para erklärt, der mit "The first ..." beginnt :-)
artfulrobot
6

Eine andere Möglichkeit besteht darin, den Benutzernamen direkt in der Apache-Konfiguration zu ändern. Dies ist der Fall, wenn es sich um Ihren lokalen Computer handelt und Sie Bilder von einem anderen Ort speichern, der die für den Ordner vorgenommenen Berechtigungen zunichte macht. Auch zu tun, wenn Sie nur 1 Benutzer haben und sich nicht für WWW-Daten interessieren!

$ sudo vi /etc/apache2/apache2.conf

Finden Sie Benutzer und Gruppe und setzen Sie Ihre
User <Your User>
Group <Your Group>

$ sudo service apache2 restart
Shadowbob
quelle
Diese Lösung scheint nicht so sicher zu sein. Weiß jemand, welche Sicherheitsbedrohungen diese Einstellung hervorruft?
Fleuv
Ich bin mir ziemlich sicher, dass es nicht sicher ist. Deshalb habe ich nur die Genauigkeit von Local Machine angegeben.
Shadowbob
Diese Lösung bietet allen Zugriff auf Apache auf Ihren Ordner ...
Loenix