Dateirechte automatisch ändern?

  • Hallo,


    ich kopiere automatisch Dateien mit lsyncd von einem FTP Ordner in einen Ordner im Datenverzeichnis meiner Nextcloud, damit die Daten dort zur Verfügung stehen.

    Kopieren klappt, aufrufen lassen sich die Dateien aber nicht. Der Besitzer ist nämlich root, unter dem lsyncd läuft. Für Nextcloud müsste der Besitzer aber www-data sein.


    Kann man den Besitzer irgendwie automatisch nach abgeschlossenem Kopiervorgang auf www-data für alle Dateien ändern?


    Danke für Tipps

  • Du könntest einen Cronjob erstellen, der in einem Zeitraum nach dem geplanten lsyncd Upload die richtigen Zugriffsrechte setzt.
    Ein

    Code
    sudo -u www-data php occ files:scan

    müsstest du im Verzeichnis von nextcloud zusätzlich noch fahren, damit nextcloud die Dateien überhaupt zur Datenbank hinzufügt.

    Läuft deine nextcloud auf einem eigenen Server oder in einem Webspace?


  • Ja, die NC läuft auf meinem eigenen Server.

    Cronjob wollte ich eigentlich nicht machen, weil ich da immer warten muss bis der wieder durch ist. Mit Cronjob hätte ich gleich den FTP in NC einbinden können und einen Cronjob mit files:scan laufen lassen können. Wegen der Verzögerung kopiere ich in das NC Verzeichnis. Und wenn Daten im NC Verzeichnis sind braucht es auch kein files:scan mehr. Es reicht in der config.php 'filesystem_check_changes' => 1

    Das geht aber nur in Ordnern, die im NC Datenverzeichnis liegen. Externe eingebunde Quellen, wie FTP, braucht es files:scan.

    Deswegen wäre ne andere Lösung gut...:)



  • Eine Lösung für das Rechteproblem wird sich hier sicher noch ergeben.

    lsyncd kann mittels "_extra = { … }" zusätzliche Kommandozeilenparameter an rsync übergeben, und rsync selbst hat die Möglichkeit, uid/gid direkt bei der Synchronisierung zu ändern (via "usermap"/"groupmap"/"chown", vgl. man rsync); gegebenenfalls kann man sich an diesem Beispiel orientieren.

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE/edit?usp=sharing

  • Jetzt aber mal ne andere Frage. Diese Lösung war für einen Fall indem beide Ordner Quelle und Ziel auf einem Server waren.


    Ich hab noch ein anderes Problem:

    Auf einem Shared Webspace FTP Account mit SSH Zugang, aber ohne Root Rechte um was zu installieren, liegt ein anderer FTP Ordner, dessen Inhalt ich analog auf Server A in einen Ordner kopieren / verschieben möchte.


    In diesem Fall müsste das "Tool" praktisch die Daten vom Shared Webspace FTP per SSH ziehen, also kopieren zum Server A und danach von der Quelle löschen, oder eben gleich verschieben...


    Geht das auch irgendwie?

  • Einen SSH-Zugang zu besitzen, bedeutet in der Regel, dass das verwendete Nutzerkonto auch Befehle/Binärprogramme ausführen kann, welche selbst bereitgestellt wurden. Es bietet sich in diesem Fall an, eine statisch gelinkte Version von rsync (in diesem Fall gänzlich ohne Abhängigkeiten bzgl. einer Installation, "Nicht-Standard-Bibliotheken") hochzuladen, welche dann analog verwendet werden kann – in dem Rahmen, in welchem es die Rechte des Nutzerkontos zulassen (vgl. Kommando­zeilen­option "--rsync-path").

    In Abhängigkeit von der verwendeten Shell-Umgebung siehe dazu bspw. hier.

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE/edit?usp=sharing

  • Das hilft zwar jetzt nicht im Webhosting-Fall, passt aber zum Thema: ich hatte mal icrond im Einsatz, wo ich mit einem Programm (Lightroom), das nur simples FTP konnte, Fotos hochgeladen hatte.


    Das lässt sich recht gut konfigurieren um auf verschiedene file events zu reagieren.

    CentOS 7 / nginx / php-fpm / postfix / rspamd / clamav / dovecot / nextcloud running on RS 1000 SSDx4 G8 / VPS 500 G8 / VPS 2000 G8 Plus

  • Irgendwas dauerhaft auf deinem shared webspace laufen lassen kannst du - zumindest bei netcup - nicht. Sowie du per SSH abgemeldet bist, wars das auch mit den laufenden Programmen. Da kann man höchstens mit Cronjobs was basteln.

  • Der Webspace ist nicht bei Netcup (hab ich nie behauptet). Die Idee war wie lsyncd vom Server (bei Netcup) den Ordner auf dem Webspace überwachen, neue Dateien zu Ziel kopieren / verschieben, die Dateien aus der Quelle löschen und ggfs. den owner ändern.


    Und ne Lösung per Cronjob hätte ich, da ist aber nen zeitliche Verzögerung drin.