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

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

Ich bin eher ein Windows-Mensch, also entschuldigen Sie bitte meine Unwissenheit bei dieser grundlegenden Linux-Frage.

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

Was passiert, ist, dass ich ständig damit kämpfe, wem Dateien und Ordner gehören, und ich kriege es einfach nicht hin.

So verstehe ich es bisher:

  • www-DatenDer Benutzer muss Eigentümer von Ordnern und Dateien sein, da alle Dateien unter /var/www/html Skripte ausführen, die erfordern, dass sie in ihren Ordner schreiben. Und natürlich muss es möglich sein, die Seiten über http bereitzustellen.
  • Mein FTP-Benutzer (nennen wir ihnftpuser) erfordert außerdem die Berechtigung zum Schreiben in den Ordner /var/www/html (rekursiv), da ich neue Dateien hochladen können muss.

In diesem Sinne habe ich eine Gruppe namensftp und wwwund habe alle Ordner und Dateien dieser Gruppe zugewiesen. Das hat bis zu einem gewissen Grad funktioniert ...

Ich bin fast am richtigen Ort, abgesehen von der Tatsache, dass alle neuen Ordner, die mit meinem FTP-Client erstellt werden, die falschen Berechtigungen haben (was ich korrigieren kann, indem ich sie unter FTP-Client ändere), aber dann kann www-data nicht in sie schreiben, weil sie Eigentum vonftpuserund am Ende muss ich mich per SSH anmelden und eine Chown-zu-Ftpandwww-Gruppe ausführen, damit beide glücklich sind.

Wie kann ich dafür sorgen, dass alle neuen Ordner, die ich unter FTP erstelle, die richtigen Berechtigungen (774) haben und automatisch Eigentümer sindftp und wwwGruppe, in die ich über das Web hochladen und bereitstellen kann (mit Schreibberechtigung), ohne jedes Mal alle neuen Ordner und Dateien per Chown bearbeiten zu müssen?

Antwort1

VerwendenGID festlegenBerechtigungen für das Web-Stammverzeichnis und geben Sie diese an die untergeordneten Verzeichnisse weiter.

Wenn Sie SetGID auf ein Verzeichnis anwenden, werden alle neuen Elemente in diesem Verzeichnis mit derselben Gruppe erstellt, die ihr übergeordnetes Element hat, unabhängig von der Standardgruppenmitgliedschaft des Benutzers.

Um SetGID auf ein Dateisystemobjekt anzuwenden, verwenden Sie es chmodmit einer 2 vor dem Berechtigungscode.
(Zum Beispiel: 740 => 2740).

Ich verwende SetGID auf vielen meiner Samba-Freigaben, sodass Dateien immer der Besitzergruppe angehören Usersund jedes Mitglied der Gruppe die Dateien lesen kann (normalerweise verwende ich 2750es so, dass nur der Besitzerbenutzer in die Datei schreiben kann).

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

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

Dann werden neue Dateien und Ordner mit Eigentumsverhältnissen wie erstellt ftpuser:ftpandwww.

Bearbeiten:

Abhängig von Ihrem Anwendungsfall ist SetGID wahrscheinlich ausreichend, 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 die Eigentümerschaft richtig ist), sollten Sie am besten einenbenutzerdefinierte UMASK für den Benutzer, der die Dateien erstellt.

Wenn Sie Schwierigkeiten haben, die UMASK für den Benutzer festzulegen (weil es sich um einen Daemon handelt), lesen Sie diesen Thread zu Optionen fürFestlegen der UMASK eines Daemon-Benutzers.

Ich würde die Maske empfehlen, 007wenn Gruppenmitglieder Dateien schreiben und löschen dürfen und Nichteigentümern keine Berechtigungen gewährt werden sollen.

verwandte Informationen