Im Terminal des Docker keine Sudo-Befehle

Begonnen von Superposchi, 16 November 2020, 13:58:27

Vorheriges Thema - Nächstes Thema

Superposchi

Hallo, ich kann im Container über den Button Terminal keine sudo-Befehle absetzen.
Es kommt beispielsweise nur folgendes zurück:
sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"                                                                                                                                                                                                                                                       
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner                                                                                                                                                                                                                                                                   
sudo: fatal error, unable to load plugins


Da soweit ich es gesehen habe, andere Befehle funktionieren und die Rückmeldung es ja indirekt auch sagt, hat das Terminal offenbar keinen Schreibzugriff.
Frage ist nun, was muss ich tun, damit ich auch Sudo-Befehle über dieses Terminal absetzen kann.

Und bitte keine Verweise auf Portainer, damit komme ich überhaupt nicht klar. Sollte wirklich die allerletzte Notlösung sein und dann auch nur mit einer Schritt-für-Schritt-Anleitung.

Eisix

Hallo,

musst du da überhaupt sudo Befehle absetzen? Bis du da nicht root?
Tipp mal id

Gruß
Eisix

Wernieman

Innerhalb eines Containes bist Du root ... es sei denn, in der Config wurde anders gearbeitet
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Superposchi

#3
Ich will den gassistant installieren und alle Quellen geben immer einen sudo-Befehl dafür an.

Rückmeldung von id:
uid=0(root) gid=0(root) groups=0(root)

Hab schon probiert den Befehl sudo npm install -g gassistant-fhem --unsafe-perm ohne sudo davor einzugeben, auch in anderen Variationen habe ich es probiert, folge bei allen Variationen war ein Abbruch mit einer Fehlermeldung, das entweder gassistant nicht gefunden wird oder ein Befehlsteil des installbefehls falsch ist bzw. fehlt


Wernieman

sudo brauchst Du,m um root zu werden ... aber laut "uid=0(root) gid=0(root) groups=0(root)" bist Du root. Mache es also einfach mal ohne sudo.

Hinweis:
Bitte versuche mal zu verstehen, was Du machst. Das blinde apptippen von irgendwelchen Anleitungen im Netz bringt Dein System gleich in Probleme ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Superposchi

Wie cih im Post darüber geschrieben habe, habe ich alle möglichen Kobinationen probiert, darunter selbstverständlich auch einfach ohne das sudo

Aber damit mir das auch geglaubt wird, habe ich es gerade eben noch mal gemacht. Hier das Ergebnis:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown

Wird statt mit Code 0 wie bei einer erfolgreichen Prozedur mit Code 126 beendet.

Eisix

npm ist installiert und in der PATH variable?
Tipp mal

which npm

Gruß
Eisix

Superposchi

Wird mit Code 1 beendet ohne eine Ausgabe zu erzeugen

Eisix

Ist npm installiert?

Was wird angezeigt wenn du nur

npm

ausführst.

Superposchi

Wird mit Code 126 beendet und gibt folgendes zurück:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown

Wernieman

Was ist das für ein Container?
Der "offizieller" FHEM Container?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Superposchi

Ja, der offizielle Fhem-Container auf einem QNAP NAS mit ARM-Achitektur.

kadettilac89

#12
Frage 1:
Welches Image genau? docker pull fhem/fhem (wie empfohlen) oder docker pull fhem/fhem-arm64v8_linux??

Frage 2:
Hast du mal die empfohlene Installationsoption getestet? Du willst Package "gassistant-fhem" installieren wie ich das verstehe.

https://github.com/fhem/fhem-docker/#add-custom-packages


Add custom packages
You may define several different types of packages to be installed automatically during initial start of the container by adding one of the following parameters to your container run command:

-e NPM_PKGS="package1 package2"


Frage 3: hast du mal die Definition von gassistant im Docker getestet? Ich dachte gassistant ist im Docker-Image sowieso drin. Ich nutze es, kann mich aber nicht erinnern, das installiert zu haben.

S. Code Zeile 400 ff

# Add nodejs app layer
RUN if ( [ "${NPM_PKGS}" != "" ] || [ "${IMAGE_LAYER_NODEJS}" != "0" ] || [ "${IMAGE_LAYER_NODEJS_EXT}" != "0" ] ) && [ "${ARCH}" != "arm32v5" ]; then \
      LC_ALL=C curl --retry 3 --retry-connrefused --retry-delay 2 -fsSL https://deb.nodesource.com/setup_10.x | LC_ALL=C bash - \
      && LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends \
           nodejs \
      && if [ ! -e /usr/bin/npm ]; then \
           LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends \
             npm \
      ; fi \
      && npm install -g --unsafe-perm --production \
          npm \
      && if [ "${NPM_PKGS}" != "" ]; then \
          npm install -g --unsafe-perm --production \
           ${NPM_PKGS} \
         ; fi \
      && if [ "${IMAGE_LAYER_NODEJS_EXT}" != "0" ]; then \
           npm install -g --unsafe-perm --production \
            alexa-cookie2 \
            alexa-fhem \
            gassistant-fhem \     <<<-----------------
            homebridge \
            homebridge-fhem \
            tradfri-fhem \
        ; fi \
      && LC_ALL=C apt-get autoremove -qqy && LC_ALL=C apt-get clean \
      && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.[^.] ~/.??* ~/* \
    ; fi


Edit: Nachtrag, welche CPU + OS hast du? 32bit installiert kein NPM wenn ich den Code im Dockerfile richtig interpretiere. 

Superposchi

Also zu 1) soweit ich mich erinnern kann habe ich einfach pull fhem/fhem genommen. Kann man das irgendwie kontrollieren?
Zu 2) ich will eigentlich Fhem-Connect nutzen, dafür ist dieses gassistant-fhem wohl Voraussetzung. Doch der Befehl zum installieren funktioniert halt nicht bei mir. Mehr kann ich dazu nicht sagen, da es meinen Horizont aktuell übersteigt.
Zu 3) nein habe ich nicht, da ich auch gar nicht wüsste wie man das macht. Ich sehe nur, dass im erstellten fhem-connect-Device eine Meldung steht, die anzeigt, das gassistant-fhem fehlt. Entsprechendes List kann ich gerne nachreichen wenn gewünscht.

Zum Nachtrag:
Ich habe eine QNAP TS-431 X2 mit Annapuna Labs Alpine AL314 Quad-Core ARM Cortex-A15 CPU mit 1,7 GHz und nutze die aktuellste Firmwareversion vom NAS (QTS 4.5.1.1.480 Build 20201108)
Denke mal das sich die Frage auf das NAS bezieht, oder?

kadettilac89

vermutlich wird für 32bit arm-CPU kein NPM im Docker installiert. Sehe zwar nur die Einschränkung auf arm32v5, deine CPU müsste arm32v7 sein. Kann aber sein, dass auch dafür die npm nicht installiert werden. Entweder wegen geringer Verbreitung generell 32bit nicht mehr, oder weil benötigte Pakete nicht (mehr) in 32 bit verfügbar sind.

Du kannst:
1) mal zum Test das Image "docker pull fhem/fhem-arm32v7_linux" testen. Vielleicht ist die Behandlung mit drin. Obwohl ich davon ausgehe, dass per Default Image sowieso der richtige Build ausgewählt wird

2) npm manuell installieren, Anleitung müsste diese hier passen ..... https://www.instructables.com/Install-Nodejs-and-Npm-on-Raspberry-Pi/

3) Das Thema im Docker Thread ansprechen

Ach ja ... mach ein Backup bevor du rumspielst damit du keine Daten verlierst.