Probleme mit FTP- und Apache-Berechtigungen

10

Ich habe Probleme, welcher Benutzer mein WWW-Verzeichnis besitzen sollte - FTP oder Apache? Wenn der FTP-Benutzer festgelegt ist, kann er Dateien hinzufügen, entfernen und einfach ändern, aber Aktionen des PHP-Dateisystems erzeugen Fehler, denen die Berechtigung verweigert wurde (natürlich, weil der Benutzer Apache sein muss). Wenn das WWW-Verzeichnis jedoch auf Apache umgestellt ist, kann der FTPuser einige Aktionen wie das Ändern und Löschen von Dateien nicht ausführen. Hat jemand jemals ein ähnliches Problem festgestellt? Was ist das Problem? Vielen Dank

Strahl
quelle

Antworten:

12

Dafür sind Gruppen da.

Sie können den ftpBenutzer zur apacheGruppe hinzufügen und umgekehrt. Oder, noch besser, Sie können sie einer dritten Gruppe hinzufügen, die Sie speziell für diesen Zweck erstellen.

z.B

# groupadd mygroup
# useradd -G mygroup ftp
# useradd -G Mygroup Apache
# chown -R: mygroup / var / www
# chmod -R g + rw / var / www

Diese Befehle führen Folgendes aus:

  1. Erstellt eine neue Gruppe 'mygroup'
  2. Fügt meiner Gruppe einen FTP-Benutzer hinzu
  3. Fügt einen Apache-Benutzer zu mygroup hinzu
  4. Gewährt rekursiv Gruppeneigentum für Inhalte von / var / www / an mygroup
  5. Gewährt der Gruppe rekursiv Lese- und Schreibberechtigungen für den Inhalt von / var / www /

Sie müssen nur sicherstellen, dass zukünftig hinzugefügte Dateien zur Gruppe 'mygroup' gehören und über die entsprechenden Berechtigungen für Apache und FTP verfügen, um sie zu lesen / schreiben.

Hobodave
quelle
3
Durch die Kombination von " find /var/www -type d -print0 | xargs -0 chmod g+s /var/www" mit einer Umask von 002 wird sichergestellt, dass neue Dateien und Verzeichnisse in / var / www die entsprechende Gruppe und die Berechtigungen für den R / W-Zugriff der Gruppe erben. Viele Linux-Distributionen verwenden jetzt standardmäßig eine Umask von 002 (die gleichen, die standardmäßig eine neue Gruppe für jeden neuen Benutzer erstellen)
freiheit
Diese Antwort funktioniert perfekt! Ich habe jedoch ein Problem, bei dem der Benutzer weiterhin alle anderen Verzeichnisse anzeigen kann. Gibt var/wwwes eine Methode, um dies einzuschränken?
Maxisme
3
Die Zeilen 2 und 3 funktionieren nicht, wenn die Benutzer bereits vorhanden sind (unter CentOS 7). In diesem Fall verwenden Sie usermodzBusermod -G mygroup ftp
Nick
Einfach, selbsterklärend, verständlich! Perfekt! Danke, @hobodave!
GTodorov
4

Der größte Teil Ihres Inhalts sollte einem anderen Benutzer als Apache gehören. Angenommen, Sie verwenden FTP zum Aktualisieren Ihrer Inhalte, können Sie festlegen, dass alle Dateien im Besitz von ftp: apache sind. Ich würde vorschlagen, SCP für SFTP anstelle von FTP zu verwenden. Dateien sollten die Berechtigungen 644 oder 640 und die Verzeichnisberechtigungen 755 oder 750 haben.

Für Dateien und Verzeichnisse muss die Anwendung schreiben, um Gruppenschreibzugriff hinzuzufügen.

BillThor
quelle
0

Ich hatte ein ähnliches Problem mit einer PHP-Seite, die einen Ordner mit einem anderen Namen auf den Server kopierte. Ich habe es behoben, indem ich den PHP-abgesicherten Modus ausgeschaltet habe.

karl
quelle
2
Der PHP-abgesicherte Modus gibt es nicht ohne Grund. Das Ausschalten ist überhaupt keine gute Idee.
user9517