Wie gebe ich von FTP erstellten Dateien und Verzeichnissen die richtigen Berechtigungen, damit Apache sie lesen und schreiben kann?

8

Ich bin eher eine Windows-Person. Bitte entschuldigen Sie meine Unwissenheit mit dieser grundlegenden Linux-Frage.

Ich suche einen Linux (Debian) Server, auf dem nur Apache2 und vsftp installiert sind.

Was passiert ist, dass ich einen ständigen Kampf mit dem habe, der Dateien und Ordner besitzt und es nicht richtig zu machen scheint.

Dies ist mein bisheriges Verständnis:

  • Der Benutzer von www-data benötigt den Besitz von Ordnern und Dateien, da alle Dateien unter / var / www / html Skripte ausführen, für die er in seinen Ordner schreiben muss. Und natürlich muss es in der Lage sein, die Seiten über http zu bedienen.
  • Mein FTP-Benutzer (nennen wir es FTPUSER ) benötigt auch die Berechtigung zum Schreiben in den Ordner / var / www / html (rekursiv), da ich neue Dateien hochladen kann.

In diesem Sinne habe ich eine Gruppe namens ftpandwww erstellt und alle Ordner und Dateien dieser Gruppe zugeordnet. Das hat bis zu einem gewissen Grad funktioniert ...

Ich bin fast am richtigen Ort, außer dass alle neuen Ordner, die mit meinem FTP-Client erstellt wurden, die falschen Berechtigungen haben (die ich korrigieren kann, indem ich sie unter dem FTP-Client ändere), aber dann können www-Daten nicht in sie schreiben weil sie im Besitz von ftpuser sind und ich am Ende SSH in der Gruppe ftpandwww ausführen muss, damit sie beide glücklich sind.

Wie stelle ich sicher , dass alle neuen Ordner, die ich unter FTP erstelle, die richtigen Berechtigungen (774) haben und automatisch im Besitz der ftpandwww- Gruppe sind, die ich über das Web (mit Schreibberechtigungen) hochladen und bereitstellen kann, ohne dass ich alle Ordner durchsuchen muss jedes Mal neue Ordner und Dateien?

Omega1
quelle

Antworten:

10

Verwenden Sie SetGID- Berechtigungen für das Webstammverzeichnis und geben Sie sie an die untergeordneten Elemente weiter .

Wenn Sie SetGID auf ein Verzeichnis anwenden, werden alle neuen Elemente in diesem Verzeichnis mit derselben Gruppe erstellt, über die ihre Eltern verfügen, unabhängig von der Standardgruppenmitgliedschaft des Benutzers.

Verwenden Sie zum Anwenden von SetGID auf ein Dateisystemobjekt chmodeine 2 vor dem Berechtigungscode.
(zB: 740 => 2740).

Ich verwende SetGID auf vielen meiner Samba-Freigaben, sodass Dateien immer die Ownergroup haben Usersund jedes Mitglied der Gruppe die Dateien lesen kann (normalerweise verwende ich sie, 2750damit nur der Eigentümerbenutzer in die Datei schreiben kann).

Führen Sie in Ihrem Fall Folgendes aus (ersetzen Sie XXX durch Ihre gewünschten Berechtigungen):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

Dann werden neue Dateien und Ordner mit Besitz wie herauskommen ftpuser:ftpandwww.

Bearbeiten:

Abhängig von Ihrem Anwendungsfall reicht SetGID wahrscheinlich aus, um Ihr Problem zu lösen. Wenn Sie jedoch weiterhin Probleme haben, bei denen dem einen oder anderen Benutzer das Schreiben aufgrund einer falschen Gruppenberechtigung verweigert wird (aber das Eigentum ist richtig), sollten Sie dies am besten festlegen Eine benutzerdefinierte UMASK für den Benutzer, der die Dateien erstellt .

Wenn Sie Schwierigkeiten haben, die UMASK für den Benutzer festzulegen (da es sich um einen Daemon handelt), überprüfen Sie in diesem Thread die Optionen zum Festlegen der UMASK eines Daemon-Benutzers .

Ich würde die Maske empfehlen, 007wenn Sie möchten, dass Gruppenmitglieder Dateien schreiben und löschen können und keine Berechtigungen für Nicht-Eigentümer.

Frank Thomas
quelle
Vielen Dank, ich werde es versuchen, wenn Sie erwähnen, dass alle Dateien und Ordner diesen Eigentümer haben. Danke noch einmal.
Omega1
Der tatsächliche Eigentümer-Benutzer ist wahrscheinlich der Benutzer, der den Prozess ausführt, es sei denn, er verwendet die lokale Authentifizierung (dies hängt jedoch vollständig von der Anwendung ab). In jedem Fall hängt die Antwort auf Ihre Frage von dem XXX ab, das Sie verwenden möchten. Da sich sowohl wwwdata als auch ftpdata in derselben Gruppe befinden, können beide Konten auf die Objekte schreiben, wenn Sie 770 angeben. Wenn Sie es jedoch 740 geben würden, könnte nur der Benutzer des Besitzers schreiben, aber jedes Mitglied von ftpandwww könnte lesen. Der Punkt ist, dass Sie für diese Vorgänge Gruppen-Dauerwellen anstelle von Benutzer-Dauerwellen verwenden.
Frank Thomas