PHP - Shell und Webausführung hat andere Rechte/anderer Benutzer?

  • Moinsen,


    meine Frage:
    Wieso hat die Shell und der Aufruf über die Domain andere Rechte bzw. einen anderen Benutzer?

    Habe NextCloud installiert und hatte Probleme dabei.

    Über den Web Installer gab es erst Probleme, dann habe ich es über occ per Shell versucht, was auch wiederum zu Problemen führte.
    Im nachhinein hab ich herausgefunden, dass es unter anderem an einem "."-Punkt im Namen der Datenbank lag.


    Was mir aber zusätzlich dabei aufgefallen ist, ist die Tatsache, dass bei der Webinstallation jetzt zwar alles läuft aber, wenn ich per Shell/occ einen Befehl ausführen möchte, wird mir mitgeteilt, dass Berechtigungen fehlen und ich den richtigen Benutzer nutzen soll.
    Das gleiche Verhalten hatte ich umgekehrt bei der Installation über occ auch. Da wurde mir in der Webseite gesagt, dass die Berechtigungen nicht passen und ich den passenden Benutzer nutzen soll.

    Dementsprechend gehe ich stark davon aus, dass die Aufrufe per Domain einen anderen Benutzer (Standard Benutzer) wählen und damit ausgeführt werden und die Shell dann irgendeinen anderen Benutzer oder Berechtigungen benutzt.

    Jetzt stellt sich mir die Frage, wie kann ich die Kommandos auf der Shell mit dem gleichen "hostingxxxxxx" Benutzer ausführen wie die Scripte die per Web-Aufruf ausgeführt werden?

    Jemand eine Idee woran das liegt oder ob das so gewollt/normal ist oder hab ich irgendwas übersehen oder falsch verstanden?


    MfG und danke für weitere Infos

  • Es liegt nicht an unterschiedlichen Benutzern,sondern an unterschiedlichen Pfaden zum data-Verzeichnis beim Web-Aufruf und in der Shell. Also am chroot der Shell. Das lässt sich relativ einfach fixen, z.B. mit einer zusätzlichen Datei data.config.php im config-Verzeichnis der Cloud mit folgendem Inhalt:


    PHP
    <?php
    
    $CONFIG['datadirectory'] = realpath(__dir__ . '/../data');

    Kudos für diese Lösungsvariante an KB19

  • Kann ich jetzt nicht nachvollziehen, ich bin in der Shell der User hostingxxxxxx und unter dem User wird auch zumindest PHP ausgeführt. Meine Dateien und Verzeichnisse haben den Owner hostingxxxxxx und die Gruppe psaserv oder psacln, je nachdem ob der Apache (direkt, nicht über PHP) darauf zugreifen darf oder nicht.

  • Die Meldung wird vermutlich etwas in der Art gesagt haben, dass auf das data-Verzeichnis nicht zugegriffen werden kann. Das liegt eben daran, dass der in der config.php gesetzte, absolute Pfad für das Dataverzeichnis in der Shell so (für den User und damit auch für occ) wegen chroot gar nicht existiert.

  • Die Meldung wird vermutlich etwas in der Art gesagt haben, dass auf das data-Verzeichnis nicht zugegriffen werden kann. Das liegt eben daran, dass der in der config.php gesetzte, absolute Pfad für das Dataverzeichnis in der Shell so (für den User und damit auch für occ) wegen chroot gar nicht existiert.

    Ja stimmt. Bin mit den Pfaden, was das an geht nicht so ganz vertraut.

    Auf jeden Fall klappt es wohl mit der obigen Lösung. Die Config wird auf jeden Fall erkannt. Gehe davon aus, dass somit auch die Befehle funktionieren sollten. Hab ich noch nicht getestet.


    Andere Sache, die mir gerade beim Aufruf von occ auffällt ist das PHP memory limit.


    Mir ist klar, dass ich den Aufruf mit -d memory_limit ändern kann.


    Aber kann ich nicht auch für das ganze Verzeichnis diese Änderung vornehmen?

    Also im Script selber weiß ich das auch mit "set Mem Limit"

    Aber ich habe es über eine php.ini getestet und dort das memory Limit eingetragen jedoch scheint das keine Auswirkung zu haben. Was muss ich da ändern oder beachten?