Kein sudo in Bash?

  • Hallo Community,


    ich bin leider sehr unwissend auf der Linux-Kommandozeile. Was ich möchte: Einige SSH-Befehle gegen meine Nextcloud-Instanz abzusetzen, die auf einem Webhosting 8000 SE läuft.

    Das Login über Putty klappt, der Wechsel in das Installationsverzeichnis ebenfalls.


    "sudo -u www-data php occ maintenance:mode --on" führt aber direkt zu "sudo: command not found".

    Wo liegt mein Fehler?

  • Bitte nicht einfach blind irgendwelche Befehle ausführen. "sudo" funtioniert natürlich nicht in einem Webhosting Paket. Versuche das ganze einfach mal ohne den Teil vor dem php, sprich "php occ maintenance:mode --on". Evtl. muss auch noch der php Pfad an sich entsprechend angepasst werden. Aber dann sollte zumindest mal eine andere Fehlermeldung kommen.


    Ich könne mich echt aufregen in wie vielen (auch offiziellen) Dokumentationen und Tipps immer sudo Befehle aufgeführt sind. Die werden dann meist unwissend irgendwo kopiert und man wundert sich, warum nichts mehr funktioniert. Das hat sich echt zu einer Unart in der Linux Community entwickelt. Nichts gegen sudo an sich. Das ein praktisches Tool. Aber das sollte dann genutzt werden, wenn es tatsächlich benötigt wird.

  • Hay,


    kurze Antwort: kein sudo im Webhosting, da shared host und da sollte niemand admin neben netcup sein.


    Du kannst ja mal die Befehle ohne sudo versuchen, also einfach php occ maintenance:mode --on vielleicht geht das ja schon.


    P.S.: sudo sorgt dafür, dass Du normalerweise erhöhte Rechte bekommst, vergleichbar root. Damit kann man dann viel kaputt machen.


    CU, Peter

    Peter Kleemann // https://www.pkleemann.de // +49 621 1806222-0 // Kann Programme, Internet, Netzwerke und Telefon.

    Einmal editiert, zuletzt von CmdrXay ()

  • So sollte es gehen, den richtigen Pfad zu occ musst Du allerdings selbst wissen: /usr/local/php81/bin/php /path/to/occ ...


    Oder halt vorher mit cd ins richtige Verzeichnis wechseln…

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    3 Mal editiert, zuletzt von KB19 ()

    Gefällt mir 1
  • Schon mal besten Dank für Eure schnellen Antworten, echt klasse!

    Der richtige Pfad zu occ sollte das Nextcloud-Wurzelverzeichnis sein.


    Paul: Ich kann Deine Kritik gut nachvollziehen. "Blind" tippe ich in sofern nichts ein, als dass ich vorher von allem Backups erstelle. Ich komme also zumindest zurück, wenn ich Mist baue. ;)

    Du hast aber in soweit Recht, als dass ich noch nicht wirklich verstehe, wann ein Befehl mit sudo ausgeführt werden muss und wann nicht - und warum in der Tat in sehr vielen HowTos Befehlen ein "sudo" vorangestellt ist, wenn es offenbar gar nicht benötigt wird.


    Wenn ich "php occ maintenance:mode --on" nutze, scheint es prinzipiell zu klappen. Allerdings erscheint: "You are currently running 7.3.33. Please update your PHP version.bash-5.0$"

    Das ist verwunderlich, denn auf der entsprechenden Subdomain ist PHP 8.1 eingestellt...

  • Das ist verwunderlich, denn auf der entsprechenden Subdomain ist PHP 8.1 eingestellt...

    Das bezieht sich aber nicht auf die CLI-Version. Schau mal in deinem Webhosting in den Ordner /conf. Dort ist in der phpversion.readme erklärt, wie man diese - dauerhaft - umstellt.

  • Wenn ich "php occ maintenance:mode --on" nutze, scheint es prinzipiell zu klappen. Allerdings erscheint: "You are currently running 7.3.33. Please update your PHP version.bash-5.0$"

    Das ist verwunderlich, denn auf der entsprechenden Subdomain ist PHP 8.1 eingestellt...


    So sollte es gehen, den richtigen Pfad zu occ musst Du allerdings selbst wissen: /usr/local/php81/bin/php /path/to/occ ...

  • Wenn ich "php occ maintenance:mode --on" nutze, scheint es prinzipiell zu klappen. Allerdings erscheint: "You are currently running 7.3.33. Please update your PHP version.bash-5.0$"

    Das ist verwunderlich, denn auf der entsprechenden Subdomain ist PHP 8.1 eingestellt...

    Die CLI-Version ist unabhängig davon. Du kannst die benötigte Version wie in meinem Beispiel auch direkt je Aufruf angeben: https://www.netcup-wiki.de/wik…erschiedene_PHP-Versionen


    Oder global für Deinen Account in /conf/phpversion umstellen. (Eine Änderung dort wird aber erst nach einigen Minuten wirksam!)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Dann musst du entweder direkt den Pfad zum PHP8.1-CLI benutzen anstatt nur "php" (typischerweise /usr/local/php81/bin/php) oder du benutzt den vorgesehenen Mechanismus zur Umstellung der in der Shell benutzten PHP-Version. Um das dauerhaft umzustellen musst du in der Datei /conf/phpversion die Zahl 73, die da vermutlich bei dir steht, durch 81 ersetzen. Das kannst du auch in der Datei /conf-options/phpversion.readme nachlesen.

  • Vielen Dank, sehr hilf- und lehrreich, was Ihr schreibt. Ich bin System- und Netzwerkadmin im Windows-Umfeld, daher ist hier viel Neuland für mich.


    In der phpversion.readme steht allerdings:


    The following short PHP version strings are available on the CLI:

    56

    70

    71

    72

    73

    74



    Bedeutet das, ich sollte in /conf/phpversion besser die 74 eintragen, da 81 gar nicht akzeptiert werden würde?

  • Ok, prima. Aber Änderungen werden an dieser Stelle vom Server nur einmal pro Stunde eingelesen und umgesetzt, verstehe ich das richtig?

    Also im schlimmsten Fall 59 Minuten warten, bis die neuen Einstellungen greifen?

  • Ok, prima. Aber Änderungen werden an dieser Stelle vom Server nur einmal pro Stunde eingelesen und umgesetzt, verstehe ich das richtig?

    Also im schlimmsten Fall 59 Minuten warten, bis die neuen Einstellungen greifen?

    Ja, ich würde das trotzdem auf die PHP-Version einstellen, die ich am meisten brauche. Bis es greift, kann man ja immer noch direkt über den entsprechenden Pfad die gewünschte Version aufrufen, s.o.