Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [offen] root Rechte für exec()

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[offen] root Rechte für exec()

Scheduled Pinned Locked Moved Skripten / Logik
javascript
55 Posts 10 Posters 11.3k Views 8 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #9

    Gut so!

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Reply Last reply
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      wrote on last edited by
      #10

      @Homoran:

      Gut so! `

      Leider nicht ganz.

      Bei anderen Skripten hilft das nicht, bzw. nur temporär.

      Ich frage z.B. in einem Skript die Datei /var/lib/update-notifier/updates-available.

      Dies funktioniert, wenn ich vorher ein chmod 777 darauf angewendet habe.

      Die Datei wird aber anscheinend mit den Ursprungsrechten vom System neu geschrieben, sobald sie erneuert wird.

      -rw------- 1 root root 102 Jan  1 01:48 /var/lib/update-notifier/updates-available
      

      Bei meiner alten Installation konnte ich die Datei die ganze Zeit über abfragen.

      Die Rechte sind mit der Ausgabe oben identisch.

      Warum die Ursprungsinstallation mit anderen Rechten abfragt…, keine Ahnung?

      Die ursprüngliche Frage ist also noch offen.

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #11

        @ruhr70:

        Ich frage z.B. in einem Skript die Datei /var/lib/update-notifier/updates-available.

        Dies funktioniert, wenn ich vorher ein chmod 777 darauf angewendet habe.

        Die Datei wird aber anscheinend mit den Ursprungsrechten vom System neu geschrieben, sobald sie erneuert wird.

        -rw------- 1 root root 102 Jan  1 01:48 /var/lib/update-notifier/updates-available
        ```` `  
        

        Leider bin ich hier noch nicht weiter.

        Ein Linux-Profi dabei, der sagen kann, was zu tun ist, um im Javascript-Adapter die Funktion exec() mit den richtigen Rechten auszuführen?

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          wrote on last edited by
          #12

          Läuft ioBroker unter root? Wenn nein kann man auch kein exec mit root ausführen

          –-----------------------

          Send from mobile device

          Das schöne ios hat Auto Korrektur zum k****

          Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

          1 Reply Last reply
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #13

            Ich hab sowas mal gebraucht. Bin leider unterwegs daher kenne ich die exakte Syntax nicht. War irgendwas der Art

            sudo su -c pi - befehl

            Damit solltest du auch unter Angabe des Passwort Befehle als Root ausführen können.

            Gesendet von iPhone mit Tapatalk

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Reply Last reply
            0
            • BuZZyB Offline
              BuZZyB Offline
              BuZZy
              wrote on last edited by
              #14

              AlCalzone geht in die richtige Richtung:````
              exec('sudo su -c "npm i npm@latest-4 -g" root');

              
              So könnte es auch gehen falls Passworteingabe benötigt wird:
              

              exec('echo -e "DEINPASSWORT\n" | sudo -S npm i npm@latest-4 -g')

              
              Gruß
              1 Reply Last reply
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                wrote on last edited by
                #15

                danke!

                probiere ich nachher, wenn das Haus noch steht [emoji51]

                bin eigentlich der Meinung, dass ioBroker unter root installiert wurde.

                kann ich das kontrollieren und ggf ändern?

                ich geb Rückmeldung, ob die Tipps geholfen haben [emoji2]

                Gesendet von iPhone mit Tapatalk

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  Solear
                  wrote on last edited by
                  #16

                  Muss eigentlich als root installiert gewesen sein, sonst würde er den reboot-Befehl ja auch nicht ausführen.

                  iobroker als LXC unter Proxmox

                  1 Reply Last reply
                  0
                  • ruhr70R Offline
                    ruhr70R Offline
                    ruhr70
                    wrote on last edited by
                    #17

                    @Solear:

                    Muss eigentlich als root installiert gewesen sein, sonst würde er den reboot-Befehl ja auch nicht ausführen. `

                    Der reboot Befehl war nicht von mir, sondern aus der Doku entliehen.

                    Als Beispiel dafür, dass Befehle als root ausgeführt werden können.

                    Kann ich nachträglich rausfinden, ob ich wirklich als root ioBroker installiert habe (gehe ich eigentlich von aus).

                    Ich habe gerade noch ein "sudo chmod 777 /opt/iobroker" ausgeführt (bei laufendem ioBroker).

                    Das brachte keine Veränderung beim exec()

                    Adapter: Fritzbox, Unify Circuit
                    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                    1 Reply Last reply
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      wrote on last edited by
                      #18

                      @BuZZy:

                      AlCalzone geht in die richtige Richtung:````
                      exec('sudo su -c "npm i npm@latest-4 -g" root');

                      
                      So könnte es auch gehen falls Passworteingabe benötigt wird:
                      

                      exec('echo -e "DEINPASSWORT\n" | sudo -S npm i npm@latest-4 -g')

                      
                      Gruß `  
                      

                      hat leider nicht funktioniert.

                      Bei der ersten Variante:

                      'sudo su -c "cat /var/lib/update-notifier/updates-available" root'
                      
                      ->
                      javascript.0	2018-01-18 18:06:48.751	error	sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
                      javascript.0	2018-01-18 18:06:48.751	error	script.js.Systeminfos.Host.Ubuntu_Updates: Error: Command failed: sudo su -c "cat /var/lib/update-notifier/updates-available" root
                      

                      Und bei der zweiten Variante:

                      'echo -e "passwort\n" | sudo -S cat /var/lib/update-notifier/updates-available';
                      
                      ->
                      javascript.0	2018-01-18 18:11:29.153	error	script.js.Systeminfos.Host.Ubuntu_Updates: Error: Command failed: echo -e 'passwort ' | sudo -S cat /var/lib/update-notifier/updates-available [sudo] Passwort für michael: Das hat nicht funktioniert, bitte nochmal probieren. [sudo] Passwort für michael: Das hat nicht funktioniert, bitte nochmal probieren. [sudo] Passwort für michael: sudo: 2 Fehlversuche bei der Passwort-Eingabe
                      

                      Was bei der 2. Variante auffällt:

                      echo -e 'passwort '
                      

                      Hier kommt im Log hinter dem Passwort und vor dem Hochkomma noch ein Leerzeichen.

                      Adapter: Fritzbox, Unify Circuit
                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                      1 Reply Last reply
                      0
                      • ruhr70R Offline
                        ruhr70R Offline
                        ruhr70
                        wrote on last edited by
                        #19

                        @Dutchman:

                        Läuft ioBroker unter root? Wenn nein kann man auch kein exec mit root ausführen `

                        Ich frage Dich auch einmal :mrgreen:

                        Habe ich denn die Chance rauszufinden, ob ich ioBroker als root installiert habe, bzw. kann man das nachträglich ändern?

                        Adapter: Fritzbox, Unify Circuit
                        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                        1 Reply Last reply
                        0
                        • BuZZyB Offline
                          BuZZyB Offline
                          BuZZy
                          wrote on last edited by
                          #20
                          exec('sudo -S su -c "npm i npm@latest-4 -g" root');
                          ````:mrgreen:
                          
                          Probier es nochmal mit -S hinter sudo..
                          
                          Sonst hab ich keine Idee mehr.. :lol:
                          
                          Gruß
                          1 Reply Last reply
                          0
                          • ruhr70R Offline
                            ruhr70R Offline
                            ruhr70
                            wrote on last edited by
                            #21

                            @BuZZy:

                            exec('sudo -S su -c "npm i npm@latest-4 -g" root');
                            ````:mrgreen:
                            
                            Probier es nochmal mit -S hinter sudo..
                            
                            Sonst hab ich keine Idee mehr.. :lol: `  
                            

                            mmhh… jetzt kommt kein Fehler, dafür kommt nach dem exec() gar keine Rückmeldung mehr...

                            Die Abfrage:

                            'sudo -S su -c "cat /var/lib/update-notifier/updates-available" root'
                            

                            Die Logs vor und nach dem exec()

                            ...
                                if(logOn) log("Abfrage wird angestossen");
                                exec(abfrage, function(err, stdout, stderr) {
                                    if (err) {
                                        log(err,"error");
                                        return;
                                    }
                                    if(logOn) log("Test Abfrage durchgeführt");
                            ...
                            
                            

                            Nur das erste Log wird ausgegeben.

                            Wäre schön, wenn das funktioniert hätte.

                            Aber ich befürchte, dass meiner Installation die root Rechte fehlen.

                            Das wäre dann meine Hoffnung, dass da jemand weiß, wie es geht.

                            Danke für Deine Mühe!

                            Adapter: Fritzbox, Unify Circuit
                            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                            1 Reply Last reply
                            0
                            • ? Offline
                              ? Offline
                              A Former User
                              wrote on last edited by
                              #22

                              Hallo Zusammen,

                              ein Password im Rahmen eines Scriptes zu SU zu übergeben dürfte unter Linux NICHT gehen….. (meine Erfahrung) :)

                              Dazu sollte, wenn es denn sicher sein sollte expect verwendet werden.

                              Bitte mal nach Expect googlen.

                              Bei mir wird das Root Passwort beständing rotiert, bei Bedarf checke ich das Password aus und übergebe es an die

                              notwendigen Programme via Skript.

                              Im Falle von "SU Root" um mir eine Rootshell temporär zu generieren verwende ich im Skript.

                              my $suCaller = 'expect -c "set timeout 20; spawn -noecho su - ' . $tarUser . '; expect "Password:"; send "' . $tarPassword . '\r"; interact;"';

                              My 2 Cents

                              Equilora

                              1 Reply Last reply
                              0
                              • ruhr70R Offline
                                ruhr70R Offline
                                ruhr70
                                wrote on last edited by
                                #23

                                @equilora:

                                Im Falle von "SU Root" um mir eine Rootshell temporär zu generieren verwende ich im Skript.

                                my $suCaller = 'expect -c "set timeout 20; spawn -noecho su - ' . $tarUser . '; expect "Password:"; send "' . $tarPassword . '\r"; interact;"';

                                My 2 Cents

                                Equilora `

                                Danke für den Input. Ich muss zugeben, dass ich kein Wort verstanden habe. Einen Artikel zu expect lese ich gerade.

                                Momentan verstehe ich nicht, wie das anzuwenden wäre :?

                                Adapter: Fritzbox, Unify Circuit
                                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                1 Reply Last reply
                                0
                                • ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #24

                                  Jo Ruhr70,

                                  wollte Dich nicht verwirren….

                                  Wenn Du in der Linux Shell z.b "su root" eingibst.... dann kommt sicher ein Propmt, welcher nach dem Password frägt.

                                  Das kannst Du mit den üblichen Shell Scripts nicht mehr automatisiert erledigen, ausser Deine Linux Distribution ist noch aus der Steinzeit.

                                  Passwörter im Klartext in Skripts ist mittlerweile verboten :) :)

                                  Deswegen der Umweg mittels Expect.

                                  Equilora

                                  1 Reply Last reply
                                  0
                                  • ruhr70R Offline
                                    ruhr70R Offline
                                    ruhr70
                                    wrote on last edited by
                                    #25

                                    @equilora:

                                    Passwörter im Klartext in Skripts ist mittlerweile verboten :) :)

                                    Deswegen der Umweg mittels Expect.

                                    Equilora `

                                    Mein root Passwort hätte ich auch höchst ungern in das Skript gepackt.

                                    Den Umweg über Expect verstehe ich allerdings nicht, bzw. Deine Beispielzeile.

                                    Ich welche Richtung muss ich denken?

                                    Gehört das ins ioBrkoer Javascript (da würde die Syntax nicht passen)?

                                    In ein Skript unter Linux?

                                    Ein schnelles google brachte mich gar nicht weiter.

                                    Ein kleiner Schubser, in welche Richtung ich da überhaupt denken muss.. :roll:

                                    Wie wende ich Deine Zeile in Verbindung mit meinem Skript an?

                                    Adapter: Fritzbox, Unify Circuit
                                    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                    1 Reply Last reply
                                    0
                                    • ? Offline
                                      ? Offline
                                      A Former User
                                      wrote on last edited by
                                      #26

                                      Hallo Ruhr70,

                                      du verwendest EXEC damit führst Du ja Befehle auf der OS Ebene aus…..

                                      Deswegen kannst Du Expect innerhalb der IOB Skript Umgebung verwenden.

                                      Achtung Expect muss unter Umständen nachinstalliert werden (z.B Debian).

                                      Der Hintergrund ist einfach... mittels Expect rufst Du OS Befehle auf welche z.B ein Password brauchen, expect kapselt diese Programme und erlaubt dann

                                      z.B das Passwort via Skript zu senden, was im Umfeld einer Bash nicht funktionieren würde.

                                      Noch mehr verwirrt?

                                      Equilora

                                      1 Reply Last reply
                                      0
                                      • ruhr70R Offline
                                        ruhr70R Offline
                                        ruhr70
                                        wrote on last edited by
                                        #27

                                        @equilora:

                                        Noch mehr verwirrt?

                                        Equilora `

                                        Nein. Das habe ich verstanden :-)

                                        Danke für die Erläuterung!

                                        Wie verwendest Du denn Deine Zeile im Skript?

                                        Mit den Anführungszeichen und Hochkommas passt das nicht so im Skript. Deine Kommando öffnet dann eine Root Shell. Wie kommt dann das gewünschte Kommando von mir zum Zuge!

                                        Danke noch einmal für die Erklärung!

                                        Gesendet von iPad mit Tapatalk

                                        Adapter: Fritzbox, Unify Circuit
                                        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                        1 Reply Last reply
                                        0
                                        • ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on last edited by
                                          #28

                                          Hallo Ruhr70,

                                          entschuldige die holperige Konversation wir hatten einen heftigen Sturm hier und ich musste erstmal die Pferde ruhig bekommen und hier hat es grad ein Baum die Stromleitung geknickt….

                                          Mein Beispiel ist ein wenig holperig weil basierend auf Perl...

                                          my $suCaller = 'expect -c "set timeout 20; spawn -noecho su - ' . $tarUser . '; expect "Password:"; send "' . $tarPassword . '\r"; interact;"';

                                          Mittels exec rufst Du expect -c "set timeout ....

                                          ist warten das expect geladen wurde

                                          -nonecho ist eine Option welche Rückmeldungen unterdrückt,

                                          die $dingsda sind Parameter welche als Variablen vorliegen, welche ich dann einfach abrufe....

                                          Im Grunde muss das ganze nur in Java Script Notation verpackt werden.....

                                          Ich such mir mal ein paar Fälle wo root zwingend notwendig ist ohne gleich das gesamte System herunterfahren zu müssen, bin wie die Anderen

                                          auch noch beruflich tätig... please stay tuned.

                                          Equilora

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          368

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe