setgid durchführen (und Upstart-Problem)

Begonnen von Guest, 23 November 2011, 20:09:04

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo zusammen,

ich habe eine FHZ1000 als /dev/ttyUSB0 und setze über eine udev-Regel
ausschließlich die Gruppe auf "fhem". Den Besitzer belasse ich auf root.
Beim Starten von fhem (Version 5.1) wechselt fhem mittels setuid von root
eben auf fhem, belässt als GID allerdings 0. Bei mir kommt im Log dann
"Permission denied" auf /dev/ttyUSB0. Ich habe daraufhin ein setgid() in
fhem.pl hinzugefügt, jetzt klappt es auch mit den Berechtigungen und das
Device kann geöffnet werden. Wenn ein User "fhem" gefunden wird auf dem
System, wird die entsprechende Gruppe ebenfalls gesetzt.

Rudolf, hälst du es für sinnvoll, das in den Quellcode mit aufzunehmen?
Falls ja -->

Ab Zeile 256 (Version 5.1 from 2011-07-08):
    use POSIX qw(setuid setgid);
    setgid($pw[3]);
    setuid($pw[2]);

Ich hatte es zuerst andersherum probiert, also setgid nach setuid, was
natürlich nicht zum Erfolg führt.

Wer die ausführliche Geschichte erfahren möchte und neugierig ist, was es
mit dem Upstart-Problem auf sich hat, kann ja weiterlesen :-)

Also, ich habe vor kurzem meinen Stromspar-Rechner neu aufgesetzt und bin
erst jetzt dazugekommen, auch fhem wieder zu aktivieren. Als OS habe ich
Ubuntu 11.10 Server. Die fhem.pl startete ich anfangs manuell (also sudo su
...), hab dann allerdings ein entsprechendes Upstart-Skript von Rudolf
gefunden. Den Pfad zum Perlskript habe ich angepasst und gab ein "sudo
service fhem start" ein. Da hing es dann. Ich kam nicht mehr zur Bash
zurück. Mit Strg+C kam ich zurück, aber fhem wurde nicht gestartet.

Mich störte auch, dass fhem (anscheinend, mehr dazu später) mit
root-Rechten läuft, wo ich doch extra einen User und eine Gruppe angelegt
und auch die Berechtigungen von den Logdateien entsprechend gesetzt hatte.
Ich experimentierte noch mit "exec su --command ... fhem" aber das Ergebnis
blieb das gleiche: sudo service oder auch sudo start blieb hängen.

Heute aktualisierte ich mein System und wegen dem neuen Linux-Kernel führte
ich einen Reboot durch. Und plötzlich lief fhem; gestartet durch Upstart.
Was mich wunderte: es lief nicht unter root, sondern als fhem-User. Naja,
so kam ich dann drauf, dass wohl ein setuid im Programm sein musste. Da
hätte ich mir die Experimente mit su sparen können. Und das Hängenbleiben
vom Upstart wurde wahrscheinlich durch den Reboot behoben.

Viele Grüße
Bernd

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Rudolf, hälst du es für sinnvoll, das in den Quellcode mit aufzunehmen?

Nein. fhem setzt die Gruppe auf dialout und den Benutzer auf fhem, jeweils
falls vorhanden. In meinem Version von ubuntu werden alle meine CULs auch ohne
udev Regel mit der dialout Gruppe angelegt, da cdc_acm eigentlich ein
Modem-Treiber ist. ftdi_sio (fuer FHZ/EM1010PC) habe ich nicht getestet.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com