Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [offen] root Rechte für exec()

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [offen] root Rechte für exec()

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Hast du mal versucht ein sudo mitzugeben?

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        @Homoran:

        Hast du mal versucht ein sudo mitzugeben? `

        ja, habe ich. Habe die Meldungen dazu jetzt nicht parat.

        Ergebnis war aber, dass das Kommando mit Sudo gar nicht ausgeführt wird. Ohne, siehe oben, wird es versucht und es scheitert an den Rechten.,

        Der Reboot in der Doku (mein erster Post) ist auch ohne sudo. und der Reboot benötigt ebenfalls root Rechte.

        Ich vermute, dass ich nur die Rechte in dem Verzeichnis ändern muss, welches im Log angemeckert wird.

        Wie erwähnt ist das der Punkt, bei dem ich unsicher werde.

        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          Ergänzung.

          @Rainer: Ich bin ganz froh, dass Du den Thread gesehen hast.

          Das Thema müsstes Du doch aus dem Handgelenk schütteln, so viele Testinstallationen, wie Du sie durchgeführt hast 😉

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            @ruhr70:

            Ergänzung.

            @Rainer: Ich bin ganz froh, dass Du den Thread gesehen hast.

            Das Thema müsstes Du doch aus dem Handgelenk schütteln, so viele Testinstallationen, wie Du sie durchgeführt hast 😉 `

            Aber ohne Angst etwas zu zerstören. Dann wird es eben neu gemacht.

            Ich würde jetzt auch dem angemeckerten verzeichis 777 geben, auch wenn ggf. Nur eine datei das bräuchte oder gar weniger Rechte reichen würden

            1 Reply Last reply Reply Quote 0
            • ruhr70
              ruhr70 last edited by

              @Homoran:

              Ich würde jetzt auch dem angemeckerten verzeichis 777 geben, auch wenn ggf. Nur eine datei das bräuchte oder gar weniger Rechte reichen würden `

              So. Mit Angst das mit der 777 durchgezogen und es funktioniert nun.

              23:39:56.447 [info] javascript.0 script.js.Systeminfos.npm_Version_Alarm: –--------- Skript: Abfrage npm Version gestartet -----------

              23:39:56.447 [info] javascript.0 script.js.Systeminfos.npm_Version_Alarm: npm in der Version: 4

              23:40:09.300 [info] javascript.0 script.js.Systeminfos.npm_Version_Alarm: stdout: /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js /usr/lib └── npm@4.6.1

              23:40:09.300 [info] javascript.0 script.js.Systeminfos.npm_Version_Alarm: *** npm 4 wurde installiert ***

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                Gut so!

                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  @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.

                  1 Reply Last reply Reply Quote 0
                  • ruhr70
                    ruhr70 last edited by

                    @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?

                    1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators last edited by

                      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 Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • BuZZy
                          BuZZy last edited by

                          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 Reply Quote 0
                          • ruhr70
                            ruhr70 last edited by

                            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

                            1 Reply Last reply Reply Quote 0
                            • S
                              Solear last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • ruhr70
                                ruhr70 last edited by

                                @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()

                                1 Reply Last reply Reply Quote 0
                                • ruhr70
                                  ruhr70 last edited by

                                  @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.

                                  1 Reply Last reply Reply Quote 0
                                  • ruhr70
                                    ruhr70 last edited by

                                    @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?

                                    1 Reply Last reply Reply Quote 0
                                    • BuZZy
                                      BuZZy last edited by

                                      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 Reply Quote 0
                                      • ruhr70
                                        ruhr70 last edited by

                                        @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!

                                        1 Reply Last reply Reply Quote 0
                                        • ?
                                          A Former User last edited by

                                          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 Reply Quote 0
                                          • ruhr70
                                            ruhr70 last edited by

                                            @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 :?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            862
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            10
                                            55
                                            8317
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo