FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Taobyebye am 11 Juni 2016, 18:41:37

Titel: FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 11 Juni 2016, 18:41:37
Hallo,

ich habe folgendes Problem:

Ein Skript wird über FHEM mit sudo ausgeführt, nun soll dieses Skript auch wieder beendet werden können. Dies funktioniert nur, wenn man dem User fhem volle Root-Rechte gibt. Jemand eine Idee wie man einen Prozess killen kann, ohne volle Root-Rechte zu vergeben?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: digiart am 11 Juni 2016, 18:52:12
Vielleicht mit "sudo kill ..."?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 11 Juni 2016, 19:05:19
Habe ich schon versucht, ohne Erfolg.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: digiart am 11 Juni 2016, 19:09:21
Dann rate ich einmal weiter, ohne dein System zu kennen:
In der sudoers-Datei ist für den User fhem eingetragen, dass er "sudo kill" ohne Passwort verwenden darf?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 11 Juni 2016, 19:12:11
Wie trage ich das ein?
Mit visudo habe ich schon herumgespielt und mit vollen Rechten hat es funktioniert, nur wie gebe ich lediglich Rechte für den Kill-Prozess?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: vbs am 11 Juni 2016, 19:15:57
Ist erstmal schon nicht so gut, dass das Script per sudo gestartet wird. Muss das so sein?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 11 Juni 2016, 19:20:15
Ohne Root-Rechte kann ich das Skript nicht starten, da die GPIOs angesprochen werden um einen Bewegungsmelder anzusprechen.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: CoolTux am 11 Juni 2016, 19:45:32
Dann füge den User fhem zu der Gruppe für die GPIO Gruppe.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Puschel74 am 11 Juni 2016, 19:50:43
https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/
Ich liebe meine liebste Suchmaschine  8)

Nein im Ernst.
Unter Linux sollte man sich mit Rechten, Gruppen und Nutzern vertraut machen.
Es lässt sich alles auch ohne root-Rechten machen solange die Benutzerrechte stimmen.
Mit root geht es zwar einfacher aber allem jedes zu erlauben ist nicht wirklich Sinn des Nutzerkonzeptes unter Linux.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 11 Juni 2016, 20:00:24
gpio:x:997:pi,fhem
ist schon in der GPIO-Gruppe drin.
@Puschel: Genau deswegen Frage ich nach, ich möchte nur die nötigen Rechte verwenden aber wie ?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: CoolTux am 11 Juni 2016, 22:29:03
Dazu müssen wir erstmal wissen was genau du machen willst und was gegeben ist.
Wenn du ein Script ausführen willst was einen Befehl aus führt der auf ein Devicefile zu greift, so muss sowohl die Gruppe für das Script als auch die Gruppe des Devicefiles eine Gruppe sein in der der User fhem drin ist.

Es kann auch sein das fhem eine Shell benötigt. Also nicht /bin/false sondern mal /bin/sh probieren.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 12 Juni 2016, 12:48:59
Infrarot-Bewegungsmelder (PIR) ist an die GPIO des Raspi angeschlossen.
PIR wartet auf Bewegung
PIR erkennt Bewegung
Pi Noir Kamera macht ein Foto
Das Foto wird an eine Mail-Adresse geschickt
Ein Video wird erstellt und auf einem USB-Stick gespeichert
Bewegungsmelder wartet auf Bewegung
Das Skript das ich stoppen möchte ist ein Python-Skript für den PIR.

Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: vbs am 12 Juni 2016, 13:26:02
Und woran genau scheitert es? Am besten mit konkreter Fehlermeldung.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 12 Juni 2016, 14:00:10
Wenn ich mit visudo dem User fhem Alle Rechte für den Pfad des Skripts gebe, kann ich das Skript über FHEM mit z.B. killall -USR1 skript.py beenden.
Ich möchte dem User fhem aber keine Root-Rechte geben um das Sjript beenden zu können.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: vbs am 12 Juni 2016, 14:05:26
Genau, aber woran hapert es, wenn du dem fhem-User keine root-Rechte gibst?
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 12 Juni 2016, 14:10:33
Wenn ich dem User fhem nicht diese Root-Rechte gebe, kann ich das Skript nicht über fhem beenden oder es gibt eine andere Lösung die ich nicht kenne.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: CoolTux am 12 Juni 2016, 16:48:54
Mit welchen User Rechten läuft den das Skript

Skript an verfen und dann


ps axu
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 12 Juni 2016, 18:39:58
Mit dem ps axu sieht man dass root das python ausführt.
Htop sagt auch aus dass das Skript von Root kommt.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: CoolTux am 12 Juni 2016, 19:36:07
Dann lass das Script doch vom User fhem starten.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 12 Juni 2016, 20:04:08
Und wie mache ich das?
Wenn ich das Skript von einem anderen User starte (z.B. User Pi) dann stehte da RuntimeError: No access to /dev/mem.  Try running as root!
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: CoolTux am 12 Juni 2016, 20:27:51
Ohne das Skript zu kennen kann man hier nichts weiter sagen. Frage wäre wo zu /dev/mem als root.
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 14 Juni 2016, 20:31:52
Das Skript:
#!/usr/bin/python
#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#|R|a|s|p|b|e|r|r|y|P|i|-|S|p|y|.|c|o|.|u|k|
#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#
# skript.py
# Detect movement using a PIR module
#
# Author : Matt Hawkins
# Date   : 21/01/2013

# Import required Python libraries


import RPi.GPIO as GPIO
import time
import subprocess

# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)

# Define GPIO to use on Pi
GPIO_PIR = 7

print "PIR Module Test (CTRL-C to exit)"

# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)      # Echo

Current_State  = 0
Previous_State = 0

try:

  print "Waiting for PIR to settle ..."

  # Loop until PIR output is 0
  while GPIO.input(GPIO_PIR)==1:
    Current_State  = 0

  print "  Ready"

  # Loop until users quits with CTRL-C
  while True :

    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      print "  Motion detected!"
      subprocess.call(['/home/user1/skript2.sh'])

      # Record previous state
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      print "  Ready"
      Previous_State=0
# Wait for 10 milliseconds
    time.sleep(0.01)

except KeyboardInterrupt:
  print "  Quit"
  # Reset GPIO settings
  GPIO.cleanup()
Titel: Antw:FHEM Rechteproblem mit Python-Skript
Beitrag von: Taobyebye am 18 Juni 2016, 20:10:59
Jetzt ist das Skript drin und keiner antwortet mehr?