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?
quelle
Antworten:
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
chmod
eine 2 vor dem Berechtigungscode.(zB: 740 => 2740).
Ich verwende SetGID auf vielen meiner Samba-Freigaben, sodass Dateien immer die Ownergroup haben
Users
und jedes Mitglied der Gruppe die Dateien lesen kann (normalerweise verwende ich sie,2750
damit 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):
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,
007
wenn Sie möchten, dass Gruppenmitglieder Dateien schreiben und löschen können und keine Berechtigungen für Nicht-Eigentümer.quelle