Node-Red shutdown Rechte

Joe Shmoe

Cadet 3rd Year
Registriert
Sep. 2012
Beiträge
37
Hallo zusammen,

es handelt sich mit Node-Red zwar nicht direkt um ein Linux Thema, aber hängt damit zusammen, weshalb ich es hier poste.
Das halbe Internet habe ich schon durchforstet, auch ComputerBase ;)

Folgendes Problem:

Ich möchte ein Debian System via Node-Red aus der Ferne, bzw. mit einem Script herunterfahren.
Normalerweise würde ich über ein exec-Node einfach den Befehl sudo shutdown ausführen.
Allerdings hat Node-Red scheinbar keine Berechtigung dazu, denn es kommt eine Fehlermeldung.

Mit visudo habe ich bereits den folgenden Eintrag hinzugefügt, aber es hat keinen Effekt:
user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown
Installiert wurde Node-Red über das script unter meinem Benutzernamen und läuft dort als systemd.
Laut ps vxu | grep node-red läuft es auch unter meinem Benutzer, erlaubt aber dennoch keine Ausführung der Befehle.

Mein Benutzer ist in der Lage den Befehl "sudo shutdown" ohne Passwort auszuführen...
Unter Node-Red läuft ja noch der node.js Prozess im Hintergrund, vielleicht müsste eher dieser die obigen Rechte erhalten, allerdings finde ich keine Information über den Prozess bzw. den ausführenden Benutzer.

In der Node-Red config ist mein Benutzername + Homeverzeichnis eingetragen.
Führe ich in NR den Befehl who aus während ich per SSH auf dem Rechner bin gibt's meinen Benutzername als Antwort. Trenne ich die SSH Verbindung und führe erneut den Befehl aus, so kommt ein leerer String zurück... ¯\(ツ)
Vielleicht habe ich ein falsches Verständnis von Linux, aber irgendwie verstehe ich das nicht.

Wenn es eine Lösung ohne Node-Red wird, wäre das auch okay.
Wichtig ist mir nur, dass man den Linux Rechner aus der Ferne manuell, bzw. durch ein Script automatisch herunterfahren kann. Das anzustoßen wäre mit Node-Red halt sehr komfortabel.

im Internet schreiben viele was von:
ALL ALL=(ALL) NOPASSWD: ALL
Aber ganz ehrlich, das mache ich nicht! Das ist mir viel zu heikel und ein großes Sicherheitsrisiko.

Vielen Dank schon mal

MfG
Joe
 
Joe Shmoe schrieb:
im Internet schreiben viele was von:
ALL ALL=(ALL) NOPASSWD: ALL
Aber ganz ehrlich, das mache ich nicht! Das ist mir viel zu heikel und ein großes Sicherheitsrisiko.
Ich würde es zum Testen trotzdem mal kurz eintragen, und wenn es funktioniert, in /var/log/auth.log nach Hinweisen zum Benutzer o.Ä. schauen
 
Wechsle doch einfach in den root Benutzer und mache dann den Shutdown.
Bash:
sudo -i oder sudo -h
shutdown -f now
Wenn Du in die sudoers Datei /sbin/shutdown schreibst, mußt Du auch in der Konsole als Befehl sudo /sbin/shutdown schreiben.
 
  • Gefällt mir
Reaktionen: kartoffelpü
Hey,

Danke für eure Ideen.

Allerdings hat nichts davon weiter geholfen.
ALL ALL=(ALL) NOPASSWD: ALL in der sudoers Datei bewirkt rein gar nichts.
Ich kann unter meinem Benutzer zwar alles und jeden Befehl mit sudo, ohne Passwort benutzen.
Node-Red hat dennoch kein Erfolg.
Jetzt wird halt angeprangert, dass ja keine TTY verfügbar ist.
Code:
sudo: Kein TTY vorhanden und kein "askpass"-Programm angegeben

Dementsprechend hilft mir die /var/log/auth.log Datei auch nicht weiter.

PHuV schrieb:
...Wenn Du in die sudoers Datei /sbin/shutdown schreibst, mußt Du auch in der Konsole als Befehl sudo /sbin/shutdown schreiben.
Hab ich versucht, macht scheinbar keinen Unterschied.

Zum Test habe ich eben versucht ein simples Python Script aufzurufen, welches den Befehl an die Bash übergibt.
Python:
import os
os.system("sudo /sbin/reboot now")
Führe ich es über SSH als normaler Benutzer aus kommt keine Abfrage, kein Fehler, der Rechner fährt einfach herunter und startet neu.
Mache ich dasselbe über Node-Red kommen die Fehler wieder, nichts passiert.

Wie kann ich jetzt noch unterbinden, dass nach einer Konsole (TTY) gefragt wird?
Ich vermute, dass darin das Problem besteht.

EDIT: Habe eben mal sudo -S shutdown now getestet... das lässt sich ausführen, aber dann hängt der Prozess fest und wartet auf ein Passwort an stdin. Klappt also auch nur so halb.
Ideen?


Grüße
 
Danke, hab es probiert, keine Veränderung.

Ein Test ergab, dass es mit der gleichen Konfiguration im Node-Red am Raspberry Pi (debian) funktioniert, aber am Server (auch debian) jedoch nicht.
Ich habe alle /etc/sudoes und /etc sudoes.d/shutdown Dateien auf beiden Systemen verglichen und sehe da keinen Unterschied.

Verstehe nicht so recht wo genau der unterschied liegt. :confused_alt:
Node-Red wurde auf beiden Systemen über das Installationsscript von Node-Red installiert und läuft dort unter dem jeweiligen Benutzer.
 
Joe Shmoe schrieb:
Node-Red wurde auf beiden Systemen über das Installationsscript von Node-Red installiert und läuft dort unter dem jeweiligen Benutzer.
Mit anderen Worten: Das ist ein Tool, welches mehr Probleme verursacht, als das es löst.
Gut zu wissen ~notier~
 
andy_m4 schrieb:
Mit anderen Worten: Das ist ein Tool, welches mehr Probleme verursacht, als das es löst.
Gut zu wissen ~notier~
Wie kommst du drauf? Abgesehen von meinem aktuellen Problem, hatte ich noch nie welche damit.

Klar kann man auch alles manuell über npm installieren, aber wieso der Aufwand, wenn es doch auch mit dem Script geht? Das wird sogar offiziell empfohlen für ein Debian System.
Fehler kann man genauso über den manuellen Weg einbauen.
This script will:
  • remove the pre-packaged version of Node-RED and Node.js if they are present
  • install the current Node.js LTS release using the NodeSource. If it detects Node.js is already installed from NodeSource, it will ensure it is at least Node 8, but otherwise leave it alone
  • install the latest version of Node-RED using npm
  • optionally install a collection of useful Pi-specific nodes
  • setup Node-RED to run as a service and provide a set of commands to work with the service

Ob nun einzig und allein die Installation von Node-Red über das Script jetzt für das Problem ausschlaggebend ist wage ich zu bezweifeln.
Es scheint entweder eher einen grundlegenden Unterschied zwischen dem "normalen" Debian und dem Debian für den Raspberry Pi zu geben, oder es ist ein Rechteproblem, welches ich noch nicht verstehe.
 
Joe Shmoe schrieb:
Abgesehen von meinem aktuellen Problem, hatte ich noch nie welche damit.
Eigentlich ist das ja ein Problem, was relativ trivial zu debuggen wäre. Es sei denn, dieser Node-RED-Kram bietet keine halbwegs vernünftigen Debugging-Möglichkeiten. Und wenn das der Fall ist, würde ich bei meiner Einschätzung bleiben, das es ein Tool ist, welches man (ich!) meiden sollte.
 
Zurück
Oben