debian Installation vom Repository unter Ubuntu -> Fehler beim Start von FHEM

Begonnen von Motivierte linke Hände, 14 Januar 2015, 23:19:18

Vorheriges Thema - Nächstes Thema

Motivierte linke Hände

Ich habe gerade FHEM (5.6, glaube ich) aus dem Stable-Repository auf einem neu aufgesetzten Ubuntu 14.04 installiert. Nach der Installation schlug der Start über

/etc/init.d/fhem start

fehl mit einer Fehlermeldung, die mit

ZitatCan't open ./log/[...]

begann. Ein wenig Suche auf dem System und bei Google hat ergeben, dass bei der Installation aus dem Repository die Rechte falsch gesetzt werden. In /opt/fhem/log/ waren die Dateien fhem-2015-01.log, fhem-2015-01.logattr und fhem.save Benutzer "fhem", Gruppe "dialout" zugeordnet. Ein Vergleich mit den anderen Dateien ließ mich vermuten, dass die Gruppe nicht "dialout", sondern "root" sein sollte.

cd /opt/fhem/log
chown fhem:root *


Hat das Problem gelöst. Da es sich um ein neues System handelte, ist der Hinweis oben vielleicht hilfreich, um den Installer anzupassen (keine Ahnung, wie sowas geht...) Und wenn nicht, hilft es vielleicht nachfolgenden Generationen von Nutzern, die beim Googlen auf diesen Beitrag stoßen.  :)
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

betateilchen

Bei der Installation aus dem Repository werden die Rechte für das gesamte Verzeichnis /opt/fhem und alle darin enthaltenen Unterverzeichnisse gesetzt:

chown -R fhem:root /opt/fhem

Da fhem die Logdateien selbst anlegt, hat fhem auch die Rechte, jederzeit in die Datei schreiben zu dürfen.

Solche Fehler wie von Dir beschrieben, treten meistens dann auf, wenn man als root irgendwelche Änderungen innerhalb des fhem-Verzeichnisses ausführt und vergisst, danach die Rechte richtig zu setzen.

Und Ubuntu verhält sich in manchen Sachen ohnehin "komisch".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Motivierte linke Hände

#2
Ich hatte gerade das Problem, dass hier einige Logfiles nicht mehr geschrieben wurden. Die Suche hat ergeben, dass schon wieder die Rechte nicht stimmten.

root@fhem:/opt/fhem/log# ls -l
insgesamt 76
-rw-r--r-- 1 fhem root        0 Nov  9 14:16 empty_file.txt
-rw-r--r-- 1 fhem dialout     0 Jan 15 00:33 eventTypes.txt
-rw-r--r-- 1 fhem dialout 12599 Jan 15 20:36 Fenster_UG_Buero-2015.log
-rw-r--r-- 1 fhem root    14085 Jan 16 12:56 fhem-2015-01.log
-rw-r--r-- 1 fhem root       42 Jan 14 22:50 fhem-2015-01.logattr
-rw-r--r-- 1 fhem root    21079 Jan 15 23:38 fhem.save
-rw-r--r-- 1 fhem dialout  7129 Jan 15 20:48 Heizung_UG_Buero-2015.log
-rw-r--r-- 1 fhem dialout  5772 Jan 15 20:48 Heizung_UG_Gast-2015.log


Ungefähr zu dieser Zeit hatte ich im Webinterface die Geräte umbenannt, für die die Logfiles mit falschen Rechten (dialout statt root) da rumliegen. Es scheint, dass Dateien, die FHEM selbst anlegt, die falschen Rechte erhalten, quasi verlässlich und reproduzierbar.

Kann ich da irgendwo dran drehen? Perl kann ich gaaanich.

Das Problem selbst ließ sich natürlich über ein

chown fhem:root *

wieder lösen. Würde das nur ungern hier als Cronjob einrichten.  ;D

Edith sagt: Das Verhalten ist in der Tat reproduzierbar. Es kommt aber nicht vom rename, sondern vom neuen Gerät. Gerade einen neuen Fenstersensor angelernt:

root@fhem:/opt/fhem/log# ls -l
insgesamt 80
-rw-r--r-- 1 fhem dialout  2401 Jan 16 13:58 CUL_HM_HM_SEC_SCo_35C07D-2015.log
-rw-r--r-- 1 fhem root        0 Nov  9 14:16 empty_file.txt
-rw-r--r-- 1 fhem root        0 Jan 15 00:33 eventTypes.txt
-rw-r--r-- 1 fhem root    12599 Jan 15 20:36 Fenster_UG_Buero-2015.log
-rw-r--r-- 1 fhem root    15950 Jan 16 13:58 fhem-2015-01.log
-rw-r--r-- 1 fhem root       42 Jan 14 22:50 fhem-2015-01.logattr
-rw-r--r-- 1 fhem root    21127 Jan 16 13:56 fhem.save
-rw-r--r-- 1 fhem root     7129 Jan 15 20:48 Heizung_UG_Buero-2015.log
-rw-r--r-- 1 fhem root     5772 Jan 15 20:48 Heizung_UG_Gast-2015.log


Beim rename hat das Logfile die richtigen Rechte behalten.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Wernieman

- 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

betateilchen

Die Inkonsistenz rührt daher, dass im .deb package das fhem-Verzeichnis nach der Installation auf fhem:dialout gesetzt wird, der im gleichen Skript angelegte fhem-User aber mit fhem:dialout generiert wird. Deshalb werden neu angelegte Dateien mit fhem:dialout angelegt.

Was ich aber nicht verstehe:

Solange fhem unter dem User fhem läuft, sollte das überhaupt keine Rolle spielen, da der Eigentümer ja in beiden Fällen "fhem" ist.

Im Installationsskript habe ich eben die Änderung eingebaut, dass nach der Installation wieder auf fhem:dialout geschrieben wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Wenn der User mit Gruppe dialout läuft, dann sollte ein chown doch keine Änderung im Verhalten bringen?

Gib uns doch bitte mal die Ausgaben von:
ps aux | grep fhem
grep fhem /etc/passwd
grep fhem /etc/group

- 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

Motivierte linke Hände

# ps aux | grep fhem
fhem     26506  0.0  3.9 114452 40284 pts/1    S    09:32   0:18 perl fhem.pl fhem.cfg


# grep fhem /etc/passwd
fhem:x:999:20::/opt/fhem:/bin/false


In /etc/group taucht fhem nicht auf, deswegen zeigt der entsprechende grep nichts. Group 20 ist dialout.
# grep dialout /etc/group
dialout:x:20:


Interessant auch:
/opt/fhem/log# ls -l
[...]
-rw-r--r-- 1 root root  22708 Jan 18 16:40 eventTypes.txt


Die Datei gehört root:root und wird seit 2 Tagen nicht mehr geschrieben (vmtl. deswegen, aber ohne sichtbare Fehlermeldung im Log). Alles andere gehört fhem:root. chown habe ich nur im log-Verzeichnis gemacht.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Wernieman

Und genau dort dürfte der Fehler liegen. Du hast chown mit "-R" gemacht und damit den Zugriff fhem komplett gegeben. Die Änderung dialout zu root dürfte nicht der Grund für funktionieren sein.
- 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

Motivierte linke Hände

Das war keine Antwort an mich, oder? Meine chowns waren immer nur im log-Verzeichnis und nicht mit -R.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Wernieman

..... nur wundere ich mich gerade, warum auf Deinem System die von fhem geschriebene Log-Datei mit root-Rechten angelegt wird ....

Da das System ansonsten gut aussieht, kann ich Dir nicht weiterhelfen. Sorry
- 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

Motivierte linke Hände

Oki, danke. Ich werde demnächst ein paar neue Geräte mit aufnehmen und dann mal schauen, was passiert.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Motivierte linke Hände

Also, beim Anlernen neuer Geräte werden Logfiles nach dem Umbenennen der Geräte nicht mehr beschrieben, bis fhem neu gestartet wird. Mit den Dateirechten hat das offenbar gar nichts zu tun... Jedenfalls nicht offensichtlich. ???

Dafür habe ich gerade was anderes Interessantes gefunden:

2015-02-03 17:49:43 Global global open ./www/images/default/remotecontrol/black_btn_SHUFFLE.png failed: Keine Berechtigung, trying to restore the previous version and aborting the update

"Keine Berechtigung" klingt nach einem Rechte-Problem bei irgendeinem shell Aufruf. Als ich das erste Mal nachsah, existierte die Datei nicht. Da habe ich sie angelegt und ihr den owner fhem:root verpasst, den hier alle anderen Dateien nach der Installation ebenfalls hatten. Das ändert aber nichts, der Fehler bleibt...

Die von mir neu angelegte Datei mit fhem:root kann ich als User fhem wieder löschen und dann auch als user fhem wieder neu anlegen...

Kann es sein, dass irgendwas mit anderen Berechtigungen als denen von fhem ausgeführt wird? Ich versteh's nicht.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.