FTP-User hat keine Uploadrechte
Moin,
ich hab grad ein kleines Problem mit meinem Server. Und zwar habe ich auf einem Ubuntu-Server einen LAMP-Server eingerichtet der auch einwandfrei funktioniert. Dazu habe ich als FTP-Server vsftpd installiert, damit ich nicht über SSH die Daten hochschieben muss.
Doch hier ist das Problem. Und zwar kann ich da der Home-Ordner des Users welcher für den FTP-Zugangs benutzt wird www-data:www-data gehört nichts hochladen. Ich habe den Benutzer auch der Gruppe www-data hinzugefügt, er hat trotzdem keine uploadrechte. Ändere ich den Besitzer auf benutzer:www-data kann der Benutzer zwar via FTP auf das Verzeichnis zugreifen, allerdings kann dann der Apache2 nicht mehr auf die Daten zugreifen.
Kann mir da jemand vielleicht helfen wie ich das Problem beheben kann? Ich hab nicht wirklich Lust jedes mal wenn ich etwas hochladen will erst mal via SSH den Besitzer des Verzeichnisses zu ändern, weil dann kann ich den Upload auch gleich via SSH machen.
Ich hätte es gern so, dass sowohl UserX als auch www-data auf den Ordner zugreifen dürfen.
Danke euch schon mal in Voraus.
Viele Grüße
Maliko
PS: Ja ich bin kein Hauptberuflicher Sysadmin sondern eigentlich Anwendungsentwickler, habe aber durch mein Studium Grundkenntnisse in Unixsystemen, die nur leider etwas eingerostet sind.
ich hab grad ein kleines Problem mit meinem Server. Und zwar habe ich auf einem Ubuntu-Server einen LAMP-Server eingerichtet der auch einwandfrei funktioniert. Dazu habe ich als FTP-Server vsftpd installiert, damit ich nicht über SSH die Daten hochschieben muss.
Doch hier ist das Problem. Und zwar kann ich da der Home-Ordner des Users welcher für den FTP-Zugangs benutzt wird www-data:www-data gehört nichts hochladen. Ich habe den Benutzer auch der Gruppe www-data hinzugefügt, er hat trotzdem keine uploadrechte. Ändere ich den Besitzer auf benutzer:www-data kann der Benutzer zwar via FTP auf das Verzeichnis zugreifen, allerdings kann dann der Apache2 nicht mehr auf die Daten zugreifen.
Kann mir da jemand vielleicht helfen wie ich das Problem beheben kann? Ich hab nicht wirklich Lust jedes mal wenn ich etwas hochladen will erst mal via SSH den Besitzer des Verzeichnisses zu ändern, weil dann kann ich den Upload auch gleich via SSH machen.
Ich hätte es gern so, dass sowohl UserX als auch www-data auf den Ordner zugreifen dürfen.
Danke euch schon mal in Voraus.
Viele Grüße
Maliko
PS: Ja ich bin kein Hauptberuflicher Sysadmin sondern eigentlich Anwendungsentwickler, habe aber durch mein Studium Grundkenntnisse in Unixsystemen, die nur leider etwas eingerostet sind.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8165936952
Url: https://administrator.de/contentid/8165936952
Ausgedruckt am: 08.11.2024 um 16:11 Uhr
4 Kommentare
Neuester Kommentar
Du kannst das Problem beheben, indem du die Berechtigungen für das Verzeichnis änderst. Führe dazu die folgenden Befehle aus:
Dies wird den Benutzer "user" als Eigentümer des Verzeichnisses "/home/user" festlegen und die Berechtigungen für das Verzeichnis auf 755 setzen. Dies bedeutet, dass der Benutzer "user" und die Gruppe "www-data" Schreib-, Lese- und Ausführungsberechtigungen für das Verzeichnis haben.
Sobald du die Berechtigungen geändert hast, solltest du in der Lage sein, über FTP Dateien in das Verzeichnis hochzuladen und der Apache2 sollte weiterhin auf die Dateien zugreifen können.
sudo chown -R user:www-data /home/user
sudo chmod -R 755 /home/user
Sobald du die Berechtigungen geändert hast, solltest du in der Lage sein, über FTP Dateien in das Verzeichnis hochzuladen und der Apache2 sollte weiterhin auf die Dateien zugreifen können.
Obacht!
Nein, es wird das Verzeichnis und alles darin ändern. Du arbeitest rekursiv.
Und du machst damit alle darin enthaltenen Dateien ausführbar, was man aus Sicherheitsgründen niemals so machen sollte.
In diesem Fall ist die Rekursivität das erste von mehreren Problemen, eines können wir einfach durch weglassen des "-R" beheben.
Falls es doch rekursiv sein soll, dann bitte immer nur mit
Durch das große X wird das Executable-Bit nur auf Verzeichnisse gesetzt und macht nicht jede Datei ausführbar. Und, vielleicht auch nicht uninteressant, eventuell absichtlich anders vergebene Berechtigungen bleiben erhalten.
Und ebenfalls als Tipp: Ein Home-Verzeichnis muss nicht zwingend in /home liegen, deshalb arbeitet man bei sowas immer mit "~benutzername", was der Platzhalter für das dem Nutzer zugewiesene Home-Verzeichnis ist.
Aber auch da will man sich dringend Gedanken machen, ob man das so will:
Denn die Gruppeneigentümerschaft des Home eines Benutzers auf www-data zu ändern wird zu folgendem führen:
- Du kannst für den User keine SSH-Keys mehr nutzen (sshd prüft die Verzeichnisrechte und das ist gut so)
- Der Webserver kann jetzt nach deinen Berechtigungs-Änderungen auf alles zugreifen, einschließlich privater SSH- und GPG-Schlüssel, Git-Zugangsdaten, Bash-History, Configs,...
Du hast damit gerade ein riesengroßes Sicherheitsproblem geschaffen!
Wenn man Webseiten aus dem regulären User-Home ausliefert, dann üblicherweise mit "mod_userdir", was aus ~benutzer/public_www ausgeliefert wird. Dann reicht es, hier Zugriffsrechte auf dieses eine Verzeichnis zu gewähren.
Aber auch wenn das Home woanders liegt, sollte der Webserver immer aus einem Unterverzeichnis ausliefern, um die angesprochenen Probleme sicher zu umgehen.
@Maliko: Davon abgesehen: Was spricht gegen SFTP? Fühlt sich wie FTP an, basiert aber auf SSH, kann mit Public-Keys für die Anmeldung genutzt werden und ist verschlüsselt
Zitat von @Cleanairs:
Dies wird den Benutzer "user" als Eigentümer des Verzeichnisses "/home/user" festlegen und die Berechtigungen für das Verzeichnis auf 755 setzen.
sudo chown -R user:www-data /home/user
sudo chmod -R 755 /home/user
Nein, es wird das Verzeichnis und alles darin ändern. Du arbeitest rekursiv.
Und du machst damit alle darin enthaltenen Dateien ausführbar, was man aus Sicherheitsgründen niemals so machen sollte.
In diesem Fall ist die Rekursivität das erste von mehreren Problemen, eines können wir einfach durch weglassen des "-R" beheben.
Falls es doch rekursiv sein soll, dann bitte immer nur mit
chmod -R o+rwX,g+rX ~benutzername
Durch das große X wird das Executable-Bit nur auf Verzeichnisse gesetzt und macht nicht jede Datei ausführbar. Und, vielleicht auch nicht uninteressant, eventuell absichtlich anders vergebene Berechtigungen bleiben erhalten.
Und ebenfalls als Tipp: Ein Home-Verzeichnis muss nicht zwingend in /home liegen, deshalb arbeitet man bei sowas immer mit "~benutzername", was der Platzhalter für das dem Nutzer zugewiesene Home-Verzeichnis ist.
Aber auch da will man sich dringend Gedanken machen, ob man das so will:
Denn die Gruppeneigentümerschaft des Home eines Benutzers auf www-data zu ändern wird zu folgendem führen:
- Du kannst für den User keine SSH-Keys mehr nutzen (sshd prüft die Verzeichnisrechte und das ist gut so)
- Der Webserver kann jetzt nach deinen Berechtigungs-Änderungen auf alles zugreifen, einschließlich privater SSH- und GPG-Schlüssel, Git-Zugangsdaten, Bash-History, Configs,...
Du hast damit gerade ein riesengroßes Sicherheitsproblem geschaffen!
Wenn man Webseiten aus dem regulären User-Home ausliefert, dann üblicherweise mit "mod_userdir", was aus ~benutzer/public_www ausgeliefert wird. Dann reicht es, hier Zugriffsrechte auf dieses eine Verzeichnis zu gewähren.
Aber auch wenn das Home woanders liegt, sollte der Webserver immer aus einem Unterverzeichnis ausliefern, um die angesprochenen Probleme sicher zu umgehen.
@Maliko: Davon abgesehen: Was spricht gegen SFTP? Fühlt sich wie FTP an, basiert aber auf SSH, kann mit Public-Keys für die Anmeldung genutzt werden und ist verschlüsselt