FritzBox: FHEM unter root starten
Falls FHEM auf der FritzBox nicht unter root läuft (sondern boxusr99/fhem), kann man größtenteils keine lokalen Befehle absetzen um bestimmte Vorgänge auf der FritzBox durchzuführen.
Hier soll erklärt werden, wie man FHEM auf der FritzBox wieder unter dem User root laufen lässt.
Startskript 'startfhem' anpassen
Um Shell-Zugriff auf die FritzBox zu erhalten muss man zunächst den Telnet-Zugang aktivieren. Dazu muss man einen Code mit irgend einem Telefon wählen, welches an die FritzBox angeschlossen ist (ca 3 Sekunden, anschließend wieder auflegen).
- #96*7* Telnet an
- #96*8* Telnet aus
Nun verbindet man sich via Telnet zur FritzBox (Port 23) entweder direkt via telnet Kommando, oder unter Windows mit PuTTY Nach dem verbinden wird ein Passwort abgefragt, dies ist das Passwort, was ihr für der FritzBox-Oberfläche vergeben habt. Euer Terminal sollte nun so aussehen:
password: BusyBox v1.19.3 (2012-10-12 14:52:09 CEST) built-in shell (ash) Enter 'help' for a list of built-in commands. ermittle die aktuelle TTY tty is "/dev/pts/1" weitere telnet Verbindung aufgebaut #
Sobald ihr eingeloggt seit, wechselt ihr in das Verzeichnis /var/media/ftp/fhem/
# cd /var/media/ftp/fhem/ # ls CHANGED dfu-programmer fhem.pl perl www FHEM docs lib startfhem backup fhem.cfg log unused #
Nun öffnet ihr diese Datei mit dem Vi (vi startfhem) und löscht den folgenden Berreich aus der Datei. Dazu mit dem Cursor auf die Zeile mit START:fhem-user und so oft dd eingeben, bis alles weg ist. Anschliesend [ESC] drücken und mit :wq! speichern und beenden.
Achtung: Der Inhalt kann bei euch ein wenig abweichen, allerdings sollte ein ähnlicher Abschnitt bei euch vorhanden sein, wenn FHEM nicht unter root läuft.
# add user fhem with uid of boxusr80/boxusr99 (== ftpuser) # Comment/delete everything between START and END to run FHEM as root ## START:fhem-user id fhem > /dev/null 2>&1 if test "$?" -ne "0"; then grep -q 1099 /etc/passwd; if test $? -eq "0"; then echo "fhem:any:1099:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd else echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd fi chown -R fhem FHEM docs log www chown fhem . * chown root dfu-programmer chmod u+s dfu-programmer fi ## END:fhem-user
Nun könnt ihr die Telnet Sitzung schließen. Fürt nun einen Reboot euer Box durch. Anschließend sollte FHEM unter root laufen. Am besten könnt ihr das auf der Telnet Konsole prüfen, in dem ihr ps ausführt. Die Ausgabe sollte folgende Zeile enthalten:
2233 root 11320 S perl fhem.pl fhem.cfg
Wenn hier root vorhanden ist, habt ihr alles richtig gemacht.