Per SFTP hochgeladene Dateien gehören nicht zu www-data und haben falsche Berechtigungen

  • Problem

  • FeliX_22
  • 3375 Aufrufe 15 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Per SFTP hochgeladene Dateien gehören nicht zu www-data und haben falsche Berechtigungen

    Hallo Pinguine!

    ich habe vor ner Weile, als Windows 10 rauskam, meinen Hauptcomputer auf Ubuntu umgestellt. Ich habe seitdem viel gelernt, aber das nur am Rande. Meine Frage bezieht sich auf meinen virtuellen Server, den ich per SSH im Terminal und mit FileZilla über SFTP erreiche.

    Das System ist Ubuntu 14.04.2 LTS und das Dateisystem wird so gemounted: / ext3 defaults,errors=remount-ro,barrier=0 1 1

    Der Ordner /var/www/ sieht bei mir so aus:

    drwxrwxr-x 10 www-data www-data 4.0K Oct 27 08:00 www/

    Ich logge mich mit also mit FileZilla als User felix mit meinem privaten Schlüssel ein und lade Dateien und Ordner in /var/www hoch. Wenn ich im SSH-Terminal groups eingebe, erscheint felix sudo www-data. Anscheinend habe ich mich irgendwann der Gruppe www-data hinzugefügt, kann mich gar nicht daran erinnern. :D Nun gut, sonst hätte ich ja auch gar nicht die Dateien per SFTP hochladen können.

    Das Problem ist jetzt, dass hochgeladene Ordner/Dateien so aussehen:

    drwxr-xr-x 2 felix felix 4.0K Oct 27 08:00 neuerordner/
    -rw-r--r-- 1 felix felix 5.2K Oct 27 08:00 neuedatei.txt

    Zum einen entsprechen Benutzer und Gruppe dem per SSH authentifizieren Benutzer, zum anderen ist das w-Bit für die Gruppe nicht gesetzt. Also muss ich jedesmal, wenn ich mit den Dateioperationen fertig bin, im SSH-Terminal sudo chown -R www-data: /var/www && sudo chmod -R g+w /var/www eingeben. Und das nervt!

    Ich habe immer mal wieder an einigen Tagen für viele Stunden nach einer Lösung gesucht. Habe viel von der umask und ACLs gelesen, aber einer passenden Lösung bin ich nicht wirklich näher gekommen.

    Ich könnte vielleicht für den Benutzer www-data auch ein Schlüsselpaar für SSH erstellen und damit meine SFTP-Dateioperationen durchführen. Dann bliebe noch das Problem mit dem g+w.

    Kann ich nicht wie bei Windows irgendwie einstellen, dass die Berechtigungen vererbt werden? Diese Lösung wäre mir am Liebsten. Da muss doch was mit umask gehen?

    Kann mir jemand dabei helfen?

    Gruß

    FeliX_22

    EDIT:

    Ich habe jetzt in der Datei /etc/ssh/sshd_config diese Zeile geändert: Subsystem sftp /usr/lib/openssh/sftp-server -u 0002 und mit sudo service ssh restart den SSH-Server neu gestartet. Damit habe ich das Problem mit dem w-Bit für Ordner und Dateien behoben. Dann habe ich mit sudo chmod g+s www, also setgid, tatsächlich eine Vererbung der Gruppe für neue Dateien und Ordner eingestellt. Bleibt nur noch das Problem mit dem falschen Benutzer. Habe gelesen, dass setuid in UNIX ignoriert wird. Was kann man da machen?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von FeliX_22 ()

  • Hallo FeliX-22
    Tut mir leid, ich kann dir leider bei diesem Problem auch nicht helfen - mir fehlt schlicht und einfach die Erfahrung mit virtuellen Servern und bei meinen Recherchen bin ich schlussendlich beim gleichen ACL-Wiki gelandet, welches du auch schon verlinkt hast. Aber das bringt dir ja leider nichts. Auch über die Vererbung in diesem Bereich habe ich nichts Gescheites gefunden.

    Tja, diese Verfahrensweise würde mich auch nerven, da sehr umständlich. Das ist jetzt zwar nicht, was du erwartest oder vielleicht hören möchtest, aber wie wäre es mit einem realen Server? Es muss ja keine neue Kiste sein, die ein Vermögen kostet. Es gibt gute und günstige Gebrauchtware. Dann hast du eh keine Probleme mehr und du kannst dir den Weg über die Konsole sparen.

    Aber vielleicht kommt ja noch jemand vorbei, der des Rätsels Lösung weiss....

    Cheers freefloating
    Carpe diem - pflücke den Tag!
  • Hallo freefloating!

    Danke für deinen Versuch. Hast du meinen Edit schon gelesen? Ich habe ja fast alles schon geschafft. Nachdem ich mit -u 0002 die umask für sftp angepasst hab und die setgid für /var/www aktiviert hab, fehlt mir nur noch die Vererbung des Benutzers. Ich finds echt jämmerlich, dass man sowas in der ganzen UNIX-Welt nicht vernünftig hinkriegt. Da lob ich mir NTFS <3

    Was wäre denn an einem realen Server anders? Da hab ich doch das gleiche Spiel mit der fehlenden Vererbung des Benutzers. Das ist kein Webhosting-Account! Ich habe selbst Apache und PHP installiert und einige VirtualHosts erfolgreich konfiguriert. Da bin ich auch ganz stolz drauf, als langjähriger Windows-User :D Und es geht auch nicht um die Konsole, sondern um den Dateiupload. Ich meine, selbst mit einem realen Server muss ich ja irgendwie die html-Dateien hochladen. Also wie meinst du das genau?

    Gruß

    FeliX_22
  • FeliX_22 schrieb:

    Kann ich nicht wie bei Windows irgendwie einstellen, dass die Berechtigungen vererbt werden?
    du meinst dateien erben gruppen?

    Vererbung von ext3-/ext4-Gruppenrechten | linux-blog – Fa. anracon – Dr. Mönchmeyer
    Rechteübersicht * Forenregeln * F.A.Q. * Lexikon
    Suchfunktion * Chat * User helfen User

    The price of freedom is eternal vigilance!
  • Zwischenfrage um das hier am lokalen Server nachvollziehen zu können.

    Welcher Art Dateien sollen ins www Hauptverzeichniss?
    Geht es darum zum Beispiel Forensoftware hochzuladen, oder sind es eher "private" Dateien die Du am Server einbinden möchtest, bzw. per FTP "anbieten" möchtest?

    Warum ich frage?! Weil ich hier einen (halb)lokalen Server unter Debian laufen habe und ich eigentlich nur von Platte A nach Platte B kopiere (und somit SFTP bei mir entfällt.
    Allerdings habe ich mir für Dich (und für meine "Weiterbildung") nun Filezilla auf dem Läppi aufgesetzt.
    Jedoch müsste ich wissen was ich von Rechner A zu Rechner, wohin, übertragen soll, damit ich das nachvollziehen kann.
  • Hallo FeliX_22 :)
    Zuerst einmal gratuliere ich dir zu deinem Teilerfolg - du hangelst dich da wirklich durch. Miandres hat dir eigentlich schon die Antwort auf deine Frage bezüglich Real-Server gegeben.... du kopierst die Dateien direkt rüber, finito, SFTP fällt weg. Ubuntu 14.04 Trusty Thar hat übrigens eine gute Server-Software. Ich gehe jetzt mal davon aus, dass es um deine Privatdateien geht. Aber zurück zu deinem Problem: Hast du den Link von Holger schon gesichtet?

    Gruss ff
    Carpe diem - pflücke den Tag!
  • Oh cool, hier tut sich ja noch was. Schön, dass ihr mir helfen wollt :)

    @Holger
    In dem Link gehts nur um Gruppenvererbung. Das Problem habe ich wie gesagt bereits mit SETGID gelöst. Was noch fehlt, ist dass der Benutzer vererbt wird. Nach weiterer Recherche bin ich zu der Erkenntnis gekommen, dass es unter Linux nicht möglich ist, dass ein UserA Dateien hochlädt/erstellt, die dann UserB gehören. Das muss dann mit sudo chown -R www-data /var/www nachträglich gemacht werden.

    @miandres
    Es geht um /var/www. Ich bin dabei, meine Webseiten vom Webspace auf den virtuellen Server umzuziehen. Das sind also html-Dateien, irgendwelche Dienste, theoretisch auch ein Forum, also alles was du über http(s) erreichst. Der FTP-Zugang bleibt mir allein vorbehalten.

    Man könnte das Problem auch aus einer anderen Richtung betrachten:
    Warum ist es erforderlich, dass die Dateien unter /var/www/ dem Benutzer www-data gehören? Ich bin kein Apache-Experte und bin daher vorsichtig, wenn es darum geht Standard-Einstellungen zu ändern. Wer weiß, was das für einen Konfigurationsaufwand mit sich zieht.

    Ich habe mich jetzt damit abgefunden. Es dauert nicht mal eine Minute das Terminal zu öffnen, "ssh servername" einzugeben (hab die Einstellungen in der ./ssh/config hinterlegt) und den chown-Befehl abzuschicken, dann noch Strg+D und fertig. Unter Windows/PuTTY hatte das doppelt so lang gedauert.

    Gruß

    FeliX_22
  • FeliX_22 schrieb:

    Es geht um /var/www. Ich bin dabei, meine Webseiten vom Webspace auf den virtuellen Server umzuziehen. Das sind also html-Dateien, irgendwelche Dienste, theoretisch auch ein Forum, also alles was du über http(s) erreichst. Der FTP-Zugang bleibt mir allein vorbehalten.
    Da macht es doch Sinn, wenn die Daten www-data gehören. Das ist eine Sicherheitsfrage, damit niemand dieselben verändern kann.
    Bei der Neu-/Nachinstallation, einem Update/Upgrade würden diese Daten auch dann wieder www-data zugeordnet, womit sich das vorherige chown Richtung User sowieso erübrigt hätte.

    Wären es private Daten (die ich persönlich auf einer anderen verlinkten Ebene auslagere), würde das System diese nicht angreifen wenn vorher ein Ordner mit den Rechten für den User angelegt wurde.

    FeliX_22 schrieb:

    Es dauert nicht mal eine Minute das Terminal zu öffnen, "ssh servername" einzugeben (hab die Einstellungen in der ./ssh/config hinterlegt) und den chown-Befehl abzuschicken, dann noch Strg+D und fertig.
    Richtig, entsprechende Rechtevergabe geht sehr schnell, aber ICH würde ein www Verzeichniss nicht einem User zuordnen.

    Den Test mittels Filezille muss ich also nicht machen, da alle Serverrelevanten Daten (Forum, Blog, Mediathek) die richtigen Rechte erhalten haben.
    Vielleicht teste ich es mal für die privaten Daten der Mediathek, aber nicht heute. Ich bekomme ne Männergrippe.
    ;)
  • miandres schrieb:

    Bei der Neu-/Nachinstallation, einem Update/Upgrade würden diese Daten auch dann wieder www-data zugeordnet, womit sich das vorherige chown Richtung User sowieso erübrigt hätte. [...] Richtig, entsprechende Rechtevergabe geht sehr schnell, aber ICH würde ein www Verzeichniss nicht einem User zuordnen.

    Ich glaube du hast mich falsch verstanden. Mit chown weise ich ja den user www-data zu. Nicht einem anderen.

    sudo chown -R www-data /var/www
  • Ohhh entschuldige ... da hatte ich den Überblick verloren und ging davon aus das Du das Verzeichnis an Felix übergeben willst.
    Aber das lag an mir. Du hattest das schon richtig beschrieben.

    Da sollte ich wohl doch mal "mein" Filezilla nerven und schauen ob selbiges bei mir ebenfalls die Verzeichnisrechte nicht vererbt bekommt.
  • Dann nochmal alles zusammengefasst, damit du nicht überall im Thread lesen musst, meine Konfiguration:

    User felix hat Zugang per SSH über publickey.
    Sein privater Schlüssel wird in FileZilla in den Einstellungen/SFTP importiert.
    Das Verzeichnis, in das hochgeladen wird, ist ein beliebiges unterhalb von /var/www mit diesen Berechtigungen drwxrsxr-x www-data www-data www (Beachte das s)
    User felix gehört zur Gruppe www-data, da er sonst keine Dateien in /var/www hochladen kann (glaube ich).
    Neu hochgeladene Ordner sehen jetzt so aus: drwxrwsr-x felix www-data ein_ordner
    Neu hochgeladene Dateien sehen jetzt so aus: -rw-rw-r-- felix www-data eine_datei.txt
  • FeliX_22 schrieb:

    Man könnte das Problem auch aus einer anderen Richtung betrachten:
    Warum ist es erforderlich, dass die Dateien unter /var/www/ dem Benutzer www-data gehören? Ich bin kein Apache-Experte und bin daher vorsichtig, wenn es darum geht Standard-Einstellungen zu ändern. Wer weiß, was das für einen Konfigurationsaufwand mit sich zieht.
    hier drehen die uhren ganz anders, in der regel läuft das unter user web0 web1 web2 usw und alle haben www-data als gruppe, bringt auch sinn je nachdem was man noch so auf der kiste hat und ob php als modul fcgi suphp oder was auch immer arbeitet bz. php ausgeführt wird
    und wenn wirklich www-data als user+gruppe benötigt wird dann regelt das meist (wie zb bei wbb) ein installer, mit webx:www-data ist man auch flexibler was die berechtigungen angeht und man kann sich nicht selbst aussperren :D
    Rechteübersicht * Forenregeln * F.A.Q. * Lexikon
    Suchfunktion * Chat * User helfen User

    The price of freedom is eternal vigilance!
  • Ja, diese webx-Geschichten kenne ich von diversen Webspace-Anbietern. Dann dürfte es also für meine Zwecke egal sein, wer der Besitzer der Dateien ist. Ich mags nur nicht, wenn irgendwo Unordnung ist, und ich mangels Erfahrung nicht ausschließen kann, dass das Probleme nach sich zieht. Oder schlimmer noch, ein Sicherheitsrisiko darstellt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von FeliX_22 ()

  • Zwischenfrage und Post:

    @Holger
    Also hebelt man die Sicherheit des Systems aus wenn man dem User zusätzlich die Gruppe www-data zuordnet.
    Soweit richtig verstanden?

    @FeliX_22
    Nur zur Veranschaulichung, weil ich mit dem Thema etwas überfordert bin.
    Ich habe gerade mein Läppi aktiviert und Filezilla angeworfen.
    Mein User ist keiner weiteren Gruppe zugeordnet.
    Ich darf mich am Server nicht als root und nicht als www-data einloggen.
    Ich darf mich als User anmelden.
    Ich darf in meinem www-Verzeichnis, kein neues Verzeichnis erstellen.
    Ich darf allerdings in einem Unterverzeichnis neue Dateien/Verzeichnisse ablegen. Das Unterverzeichnis hat eine andere Rechtevergabe.
    Die dort abgelegte Dateien und Verzeichnisse erben die Gruppenzugehörigkeit des lokalen Users.

    Anlage eines Testuser auf beiden Rechnern dem ich als einzige Gruppe www-data zuordnete, wurde ebenfalls das erstellen (ausser im selbem Verzeichnis wo auch der Hauptuser Erstellrechte hat) verweigert.
    Die im Unterverzeichniss erstellten Dateien/Verzeichnisse erhielten wieder die selben Rechte wie es auch beim Hauptuser geschah.

    Das Verzeichnis www gehört auf meinem System root und ist von den Rechten auf 0755 gesetzt.
    Das Unterverzeichnis von www, indem die User arbeiten können, gehört root, hat allerdings die Rechte auf 0777 gesetzt.

    Ob Dir das nun irgendwie hilft weiß ich nicht, aber ich Danke Dir dafür das Du mich animiert hast mich ein wenig damit zu beschäftigen.
  • Danke für den Bericht, auch wenn es mir schwer fällt, dir zu folgen. Du beschreibst die Auswirkungen deiner gesetzten Berechtigungen (rwx...) für /var/www und darunterliegendes. Warum bei dir www zu root gehört, weiß ich nicht. Ist sicher eine legitime Einstellung für ein Berechtigungs-Szenario. Aber nicht so im Detail, wie du das machst! Nun bin ich wie gesagt kein Experte auf dem Gebiet, und du hast auch meinetwegen nur ein paar Tests gemacht. Für ein echtes System würde ich jedoch dringend davon abraten die Rechte auf 0777 zu setzen. Damit hat jeder vollen Zugriff, egal wer Besitzer ist. Für das Unterverzeichnis von www solltest du alle User, die da arbeiten sollen, in die Gruppe www-data hinzufügen, die Gruppenzugehörigkeit des Unterordners ebenso, und mit 0774 können alle User arbeiten, aber alle anderen nur lesen.
  • FeliX_22 schrieb:

    Danke für den Bericht, auch wenn es mir schwer fällt, dir zu folgen.

    Moin @FeliX_22

    Ich dachte mir schon das Dir das nicht wirklich weiter hilft, dennoch wollte ich Dir aufzeigen wie es auf meinem Debian Jessie gehandelt wird.

    FeliX_22 schrieb:

    Für ein echtes System würde ich jedoch dringend davon abraten die Rechte auf 0777 zu setzen.
    Der Testordner mit umfassenden Rechten wurde nur zum testen von Filezilla angelegt.
    Da ich wie erwähnt nur einen halboffenen (nicht gelisteten) lokalen Server fahre, nutze ich für das EInspielen der Software in der Regel Dolphin unter KDE oder mc auf der Konsole. Das gilt bei mir auch für den Datentransfer von Rechner zu Läppi. Letzteres auch zum synchronisieren.
    Alles unterhalb meines www/html hat eingeschränkte Rechte.
    Meine persönlichen Daten (z. B. Musik) liegen woanders und sind in der Heimnetzwerk-Cloud (owncloud) eingebunden, welche die Rechte entsprechend herunter setzt.

    Dennoch Danke für Deinen guten Sicherheitshinweis.