Hauptmenü

fhem: Rechte für Scripte

Begonnen von gestein, 13 August 2019, 22:08:29

Vorheriges Thema - Nächstes Thema

Wernieman

#15
Noch ein paar kleine Anmerkung:
- sudo möglichst klein halten, wirklich nur die nötigsten.
- Wenn Scripte nötig werden, darf KEINER (außer root) Schreibrechte haben, ansonsten große Sicherheitslücke
- prüfen, ob es nicht alternative Möglichkeiten gibt ..... (Richtige Gruppe setzen, Rechte anpassen ...)
...
- Mal google bemühen ("hcitool non root user")
z.B. für bluetooth: (ungetestet) https://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

gestein

Hallo,

Danke nochmals für all die Hilfe.
Das Script wird nun aufgerufen.

Allerdings komme ich im Script immer noch nicht an die Bluetooth-Schnittstelle ran.

So wie im presence-Modul beschrieben, habe ich in meiner Script-Datei folgendes:
PRECHECK=`sudo hcitool -i hci0 info ${MAC} | grep -o "${MAC}"`
if [ ${#PRECHECK} -eq ${#MAC} ]; then
  # exit when phone is detected
  echo "1"
  exit 0
  fi


Als Fehlermeldung kommt jedesmal:
2019.08.16 23:59:51.364 5: PRESENCE (iPhone_Gerhard_BT2) - stopping timer
2019.08.16 23:59:51.365 5: PRESENCE (iPhone_Gerhard_BT2) - starting blocking call for mode function
2019.08.16 23:59:51.452 5: PRESENCE (iPhone_Gerhard_BT2) - execute perl function: iPhone_Gerhard_BT2|{CheckPresenceBT("38:53:9c:8e:ec:ff")}|0
Can't create connection: Input/output error
2019.08.16 23:59:56.628 1: PERL WARNING: Argument "" isn't numeric in numeric ne (!=) at ./FHEM/99_myUtils.pm line 74.
2019.08.16 23:59:56.630 5: PRESENCE (iPhone_Gerhard_BT2) - function returned with:
2019.08.16 23:59:56.640 5: PRESENCE (iPhone_Gerhard_BT2) - blocking scan result: iPhone_Gerhard_BT2|0|error|unexpected function output (expected 0 or 1):
2019.08.16 23:59:56.642 2: PRESENCE (iPhone_Gerhard_BT2) - error while processing check: unexpected function output (expected 0 or 1):
2019.08.16 23:59:56.643 4: PRESENCE (iPhone_Gerhard_BT2) - rescheduling next check in 30 seconds


Den Tipp von Wernieman habe ich so eingegeben (libcap2-bin war bereits installiert):
sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hcitool`
pi@fhem2:/opt/fhem $ getcap `which hcitool`
/usr/bin/hcitool = cap_net_admin,cap_net_raw+eip


Wenn ich mit "su fhem -c ./presenceBT.sh 40:98:AD:80:76:BB" versuche das Script als fhem aufzurufen, werde ich nach einem Passwort gefragt.
Aber welches Passwort hat der User fhem?

lg, Gerhard

Otto123

Zitat von: gestein am 17 August 2019, 00:18:53
Aber welches Passwort hat der User fhem?
Guten Morgen Gerhard,

normal hat der User fhem kein Passwort und keine Möglichkeit der interaktive Anmeldung. Die könntest Du einrichten, ich halte es aber für den falschen Weg.
Zitatsudo cp /etc/passwd /etc/passwd.sav
sudo nano /etc/passwd
# in der Zeile: fhem:x:999:20::/opt/fhem:/bin/false
# von /bin/false auf /bin/bash ändern und speichern

Dann für den Benutzer fhem ein Kennwort eingeben
sudo passwd fhem

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Du kannst auch mal folgendes probieren:

sudo -su fhem bash

Dann solltest du fhem sein...
...dann kannst du das Script ja mal aufrufen...
...und sehen was passiert...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

gestein

Guten Morgen Otto, guten Morgen Joachim,

Danke.
Ich denke auch, dass das mit einem Passwort für fhem der falsche Weg wäre.
Aber warum fragt er mich dann nach einem Passwort?
Wahrscheinlich, weil fhem nicht in der Gruppe "root" ist. Oder?

Aber warum darf fhem nicht auf den Bluetooth-Adapter zugreifen?

Ich habe das script nun händisch so ausgerufen: "sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86" und nur die gescannte BT-MAC ausgeben lassen.
Damit bekomme ich bei einigen Aufrufen hintereinander folgende Ausgaben:
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
pi@fhem2:/opt/fhem $ sudo -u fhem ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86


Mit dem von Joachim bekomme ich folgendes:
pi@fhem2:/opt/fhem $ sudo -su fhem bash
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
Can't create connection: Input/output error
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86
fhem@fhem2:~$ ./presenceBT.sh 38:53:9C:7F:C3:86
38:53:9C:7F:C3:86


Manchmal kann der user fhem auf den Bluetooth-Adapter zugreifen, manchmal nicht. Eigenartig.
Kann es sein, das Buster hier Probleme mit den Zugriffsrechten hat?
Oder der Treiber nicht richtig funktioniert?

lg, Gerhard

MadMax-FHEM

Das Passwort bei deinem Versuch ist wegen "einloggen" auf der Console...

Du hast doch das Script bei sudoers für den User fhem ohne Passwort eingetragen!?

Was passiert, wenn du nach meinem Befehl das Script mit sudo auftufst?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Hallo Gerhard,

nur mal so nebenbei: Ich habe ein neues System auf einem Pi3+ mit Buster aufgesetzt. Ohne große "Zauberei" Einfach nur Grundeinrichtung und FHEM analog hier.
Dann habe ich existierenden BT Presence Definitionen aus meinem Produktivsystem übertragen.
bash fhemcl.sh $inst1 "list -r TYPE=PRESENCE:FILTER=BT_Mi.*"|bash fhemcl.sh 8083
Das läuft ohne Probleme. Also die BT Schnittstelle unter Buster hat scheinbar kein Problem.

Warum hast Du eigentlich so einen komplizierten Ansatz mit eigenen Scripten?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gestein

Hallo Otto,

genau nach Deiner Anleitung habe ich den Umzug auch gemacht ;)

Das Script habe ich aus dem Presence-Modul bzw. einem Thread dazu kopiert und angepasst (alleine hätte ich da ja eh nicht geschafft).
Im Presence-Device wird das Script aufgerufen, die 0 bzw. 1 zurückliefert.

Mein Problem ist, dass mein iPhone sich zwar auf einen BT-scan meldet, sich dann aber mal "schlafen" legt und nicht mehr antwortet.
Auch die Lösung hier (von da habe ich auch das Script) funktioniert bei mir nicht zuverlässig. https://forum.fhem.de/index.php/topic,76342.0.html
hping3 weckt das iPhone nicht (immer) auf.

Irgenwann habe ich dann gemerkt, dass das iPhone aber immer auf eine Info-Abfrage antwortet.
Also wollte ich das natürlich umsetzen.

Im Prinzip nicht schwierig (dachte ich mir).
Einfach das Script presence.sh etwas abwandeln und schon klappt es.
Aber leider ergeben sich da meine Schweirigkeiten mit dem Zugriff auf den Bluetooth-Adapter.
Der ist übrigens der interne des RPi4.

lg, Gerhard



gestein

Hallo Joachim,

ich habe mir die Tipps zu Herzen genommen und die Scripts wieder aus dem sudoers rausgenommen.
Die Datei sieht nun so aus wie von Otto vorgeschlagen.

Dafür habe ich den Vorschlag von Wernieman mit den caps umgesetzt.
Zugriff scheint fhem zu haben. Aber nicht immer.

lg, Gerhard

gestein

Wenn ich das script nach der Eingabe von "sudo -su fhem bash" aufrufe, dann hat das Script manchmal Zugriff und manchmal nicht (siehe den zweiten Teil meines Postings von 10:58).

lg, Gerhard

Otto123

ok verstanden. Ich hatte bis vor kurzem auch mal ein Android Phone welches sich offenbar immer mal per BT verabschiedete. Geheimnisvoll das Ganze.
Ich bin bei dem dann wieder dazu übergegangen Wlan abzufragen.
Leider gibt es offenbar mit Smartphones keine stabile Universallösung.  :(

Viel Erfolg noch
Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gestein

Hallo Otto,

tja, das Ganze ist wirklich zu Verzweifeln - ständig neue Probleme ;)

lg, Gerhard

Wernieman

Könnte es sein, das der BT Adaptr es PI4 Probleme macht?

1. ist der vom PI3... auch nicht super
2. Ist der PI4 so neu, das eventuell einige Treiber noch nicht vollständig sind

Hast Du eventuell einen USB-Adapter "rumliegen"?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gestein

Hallo Otto,

danke für den Tipp. Das scheint wirklich so zu sein.
Der Treiber für das interne Bluetooth hat (noch) was.

Auf den Rat von Wernieman hin, habe ich mir vorgestern einen externen Adapter zugelegt.
Momentan bin ich noch am Testen, aber es scheint (besser) zu funktionieren.

Danke nochmals
lg, Gerhard