Fhem auf RaspberryPi als user pi laufen lassen

Begonnen von iamandy, 19 Mai 2016, 23:52:24

Vorheriges Thema - Nächstes Thema

iamandy

Hallo!

Ich möchte auf meinem Raspberry fhem beim Booten nicht unter dem User fhem, sondern unter dem User pi laufen lassen. Ich weiß aber nicht was ich wo ändern muss. Könnt ihr mir helfen?

Wernieman

Gibt es einen vernünftigen Grund warum?
Eigentlich macht man im Unix immer: eine Aufgabe (Deamon) ein User

Ansonsten:
1. Verzeichnisrechte korrigieren
2. init.d-File umbauen, das fhem mit einem anderen User gestartet wird
- 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

iamandy

Zitat von: Wernieman am 20 Mai 2016, 10:47:16
Gibt es einen vernünftigen Grund warum?
Eigentlich macht man im Unix immer: eine Aufgabe (Deamon) ein User

Ansonsten:
1. Verzeichnisrechte korrigieren
2. init.d-File umbauen, das fhem mit einem anderen User gestartet wird

Naja, welche Gründe sind schon vernünftig...  8)

Da ich diesen Rapsi nur für fhem verwende ist es lästig das ich bash Scripts unter PI ausprobiere und dann noch mal auf den user FHEM umbauen muss. Auch habe ich ssh Keys auf den anderen Servern und müsste sonst dem user FHEM am ende ohnehin die gleichen rechte bauen wie dem PI. Da wollte ich es mir einfach machen...

Ich weiß nur nicht wie das init.d-File (ich denke du meinst /etc/init.d/fhem) umgebaut werden muss, denn ich sehe in dem file keinen User. Aber ich bin auch nicht der linux guru...

Weißt du was ich in dem file anpassen muss?

Ralf W.

Hallo!

Ich sehe das wie Wernieman und halte nix von der Idee. Auch weil Du schreibst "... ich bin auch nicht der Linux Guru ...". Lass die Benutzer so wie sie sind und bei Problemen hier fragen. Und wir reden hier nicht über 50 oder mehr Skripte, oder?

MfG
http://twitter.com/RWausD
Schon gewusst, dass Haarausfall zu einer Glatze führen kann?

FHEM: NUC7PJYH2, Ubuntu Server 22.04.2 LTS, HMCCU - RaspberryMatic, DE ConBee II, diverse Sensoren und Aktoren.

iamandy

Zitat von: Ralf W. am 20 Mai 2016, 12:10:02
Hallo!

Ich sehe das wie Wernieman und halte nix von der Idee. Auch weil Du schreibst "... ich bin auch nicht der Linux Guru ...". Lass die Benutzer so wie sie sind und bei Problemen hier fragen. Und wir reden hier nicht über 50 oder mehr Skripte, oder?

MfG
Aber ich fände es dennoch toll, wenn mir jemand helfen und die Frage beantworten könnte.  ::)

dev0

Wenn man dem fhem User ein Passwort gibt und in /etc/passwd eine shell zugewiesen ist, dann kann man sich zum Testen auch mit diesem User anmelden.
Die Frage hat Wernieman doch beantwortet!?

Wernieman

In der fhem.pl steht:
# If started as root, and there is a fhem user in the /etc/passwd, su to it
if($^O !~ m/Win/ && $< == 0) {


d.h. Du must in der init.d/fhem "nur" fhem mit sudo aufrufen .....

Und warum soll eigentlich Deine anderen Rechner per script direkt auf Deinen FHEM Rechner als User fhem zugreifen?? Wenn sie zugreifen müssen, dann besser über die "FHEM-Protokolle", also z.B. telnet, http, https ...

Die Probleme, welche Du beim Testen mit pi-User zu fhem-user bekommst, liegen an gaaaans anderen Gründen! Bei Deamons werden die Umgebungsvariablen nicht geladen (Security) und damit auch nicht die PATH-Variable. Du wirst also zu dem Ergebnis kommen, das Dein Script als User pi funktioniert, aber nicht im FHEM unter dem User pi, weil Du nicht daran denkst, das Deamon<>shell ....... wird Dein "Test-Problem" also nicht lösen.
- 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

iamandy

Zitat von: Wernieman am 20 Mai 2016, 13:09:25
In der fhem.pl steht:
# If started as root, and there is a fhem user in the /etc/passwd, su to it
if($^O !~ m/Win/ && $< == 0) {


d.h. Du must in der init.d/fhem "nur" fhem mit sudo aufrufen .....

Und warum soll eigentlich Deine anderen Rechner per script direkt auf Deinen FHEM Rechner als User fhem zugreifen?? Wenn sie zugreifen müssen, dann besser über die "FHEM-Protokolle", also z.B. telnet, http, https ...

Die Probleme, welche Du beim Testen mit pi-User zu fhem-user bekommst, liegen an gaaaans anderen Gründen! Bei Deamons werden die Umgebungsvariablen nicht geladen (Security) und damit auch nicht die PATH-Variable. Du wirst also zu dem Ergebnis kommen, das Dein Script als User pi funktioniert, aber nicht im FHEM unter dem User pi, weil Du nicht daran denkst, das Deamon<>shell ....... wird Dein "Test-Problem" also nicht lösen.

Danke Wernieman! Jetzt verstehe ich wo beim Start der User auf fhem gesetzt wird, ich hab immer in Richtung init.d gesucht und nicht im Perl.

Noch ein bisschen mehr Hintergrund zum "warum mache ich das so". Mir ist noch keine besser Idee eingefallen um u.a. das folgende Problem zu lösen:

Vorbedingung:
- Ich möchte (noch) nicht vom Internet über ein NAT oder VPN Konstruktion auf mein Heimnetz zugreifen
- Ich habe einen Webserver, kann darauf aber kein fhem laufen lassen
- Ich möchte einen "Raum" "webseite" oder wie man es auch immer nennen mag auf meinen Webserver ablegen

Wie mache ich das ganze heute:
- Als erstes habe ich alles was an FHEM statisch ist (pqm2 usw.) auf meinen Web Server gelegt
- Ich rufe auf dem fhem raspberry regelmäßig alle 14 Minuten per Cron ein webupdate Shell Script auf das per wget den entsprechenden Raum läd
- Dann passe ich den Inhalt der heruntergeladenen html per SED usw. an, weil z.b. die Pfade etwas anders sind
- Am Ende kopiere ich das angepasste File per scp auf meinen Web Server

Funktioniert wunderbar. Das mache ich z.B. auch Täglich 1x mit meinen Plots

Ziel:
Ich möchte gerne "sofort" wenn z.B. ein Fenster auf/zu Event kommt, die Statusseite im Web aktualisieren, dafür den Cron aber vielleicht nur noch alle 30 Min. laufen lassen. Darum suche ich noch eine Möglichkeit aus FHEM mein webupdate Script aufzurufen. Mir scheint ich sollte das Thema Umgebungsvariablen für den User fhem betrachten, wenn ich Dich richtig verstanden habe...

Wernieman

Ich würde einen apache-Proxy laufen lassen (bzw. lasse einen laufen).

Aber für Deine wget etc. Idee, brauchst Du keinen Zugriff auf FHEM unter dem user fhem vom Rechner

Und Du hast meine Info FALSCH verstanden. Wenn Du es so machst, dann kannst Du fhem nicht mehr einfach updaten. Also NICHT die fhem.pl configurieren, sondern fhem einfach mit sudo (oder su) aufrufen! Siehe man-pages der Befehle. Dieses einfach in init-Script. Sorry aber dieses Vorgehen ist Unix-Basic!

Und .. ich glaube Du denkst zu kompiliert. Bitte berücksichtige das alte Technik-Motto "keep it simple"
- 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