FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: RitterSport am 13 Oktober 2016, 16:19:35

Titel: Rechteproblem unter Jessie *gelöst*
Beitrag von: RitterSport am 13 Oktober 2016, 16:19:35
Hallo Zusammen.

Ich habe die folgende Fehlermeldung im Log:" sudo: no tty present and no askpass program specified"

Wenn ich in der Konsole das folgende eingebe
sudo nice -n -5 ./rollo 0 1 0 1 runter
funktioniert es. Die Dateil rollo liegt unter /home/pi/Dooya/ und hat per "sudo chmod 755 /home/pi/Dooya/rollo" oder auch 777 seine Rechte bekommen. In fhem bekomme ich aber die Fehlermeldung im Log und diese hier:
{system("sudo nice -n -5 /home/pi/Dooya/rollo 0 0 1 0 runter &");;}: -1  2016-10-13 14:39:23

groups fhem liefert : fhem : dialout tty audio

Leider verliessen mich meine rudimentären try and error Ideen nun. Was kann ich machen?

Danke
Titel: Antw:Rechteproblem unter Jessie
Beitrag von: Wernieman am 13 Oktober 2016, 18:13:43
1. Unter welchem User hast Du (auf der Konsole) getestet?
2. Wie sieht die erste Zeile Deinen Scriptes aus?
3. Gibt es einen besonderen Grund, das Du sudo und nice verwendest?
Titel: Antw:Rechteproblem unter Jessie
Beitrag von: RitterSport am 14 Oktober 2016, 12:32:41
Danke schonmal für die Rückfragen.
Da oute ich mich mal als derjenige der keine Ahnung hat :-)

1. In der Konsole bin ich angemeldet als pi, somit ist das ja schon unterschiedlich zu dem Aufruf als fhem
2.Das gesamte Script ist dieses hier:
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>


// 28 Stellen = ID
// 4 Stellen = Kanal
// 8 Stellen = Befehl

// nice -n -19 ./rollo_prg 0 1 0 0 runter

int send_0(){
          digitalWrite (0, HIGH) ;
          delayMicroseconds (320) ;
          digitalWrite (0,  LOW) ;
          delayMicroseconds (600) ;
          return 0;
}

int send_1(){
          digitalWrite (0, HIGH) ;
          delayMicroseconds (700) ;
          digitalWrite (0,  LOW) ;
          delayMicroseconds (270) ;
          return 0;
          }

int send_init(){
          digitalWrite (0, HIGH) ; delayMicroseconds (5000) ;
          digitalWrite (0,  LOW) ; delayMicroseconds (1500) ;
          return 0;
          }

int main (argc, argv)
        int argc;
        char *argv[];
        {
          int i;
          wiringPiSetup ();
          pinMode (0, OUTPUT);
          while (i < 10) {
                send_init();

                i++;

                //ID
                send_0();send_0();send_0();send_1();send_1();send_0();send_1();
                send_1();send_0();send_0();send_1();send_0();send_0();send_1();
                send_0();send_0();send_0();send_1();send_1();send_1();send_1();
                send_1();send_0();send_0();send_1();send_1();send_0();send_1();

                // kanal 1 bis 128 binär
                if (strcmp(argv[1],"0") == 0) { send_0(); }
                if (strcmp(argv[1],"1") == 0) { send_1(); }
                if (strcmp(argv[2],"0") == 0) { send_0(); }
                if (strcmp(argv[2],"1") == 0) { send_1(); }
                if (strcmp(argv[3],"0") == 0) { send_0(); }
                if (strcmp(argv[3],"1") == 0) { send_1(); }
                if (strcmp(argv[4],"0") == 0) { send_0(); }
                if (strcmp(argv[4],"1") == 0) { send_1(); }

                // Funktion wählen
                if (strcmp(argv[5],"runter") == 0) { send_0();send_0();send_1();send_1();send_0();send_0();send_1();send_1();}
                if (strcmp(argv[5],"hoch") == 0)   { send_0();send_0();send_0();send_1();send_0();send_0();send_0();send_1();}
                if (strcmp(argv[5],"stop") == 0)   { send_0();send_1();send_0();send_1();send_0();send_1();send_0();send_1();}
                if (strcmp(argv[5],"lernen") == 0) { send_1();send_1();send_0();send_0();send_1();send_1();send_0();send_0();}
                //pause beim senden
                digitalWrite (0,  LOW) ; delay (50) ;
          }
  return 0 ;
}

3. Warum es als sudo und warum genau der Befehl nice ist mir nicht klar, ich habe es nachgebaut aus:https://forum.fhem.de/index.php/topic,43548.msg500172.html#msg500172 (https://forum.fhem.de/index.php/topic,43548.msg500172.html#msg500172)
Der Befehl nice hat was mit dem timing zu tun?

Titel: Antw:Rechteproblem unter Jessie
Beitrag von: digiart am 14 Oktober 2016, 12:46:49
Deine FHEM Instanz läuft vermutlich unter dem User fhem.

Also müsste in der sudoers-Datei auch ein Eintrag für den User fhem existieren.

Wen nicht, dann müsstest du mit sudo visudo die Datei bearbeiten und einen Eintrag für fhem setzen.

Wenn es danach noch immer nicht funktioniert, gibt es noch (in dieser Datei) den Parameter REQUIRETTY
Titel: Antw:Rechteproblem unter Jessie
Beitrag von: RitterSport am 14 Oktober 2016, 16:33:34
Danke, genau das fehlte.

# User privilege specification
root ALL=(ALL:ALL) ALL
fhem    ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
fhem ALL=(ALL) NOPASSWD: A
Titel: Antw:Rechteproblem unter Jessie *gelöst*
Beitrag von: Wernieman am 14 Oktober 2016, 20:25:46
Du weist, das Du fhem damit praktisch komplette root-rechte gegeben hast? Strichwort: Security?

Probiere doch mal, ob Du es als user fhem laufen lassen kannst (ohne root-Rechte und sudo)