FritzBox: FHEM unter root starten

Aus FHEMWiki

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-userund so oft ddeingeben, 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 psausführt. Die Ausgabe sollte folgende Zeile enthalten:

2233 root   11320 S  perl fhem.pl fhem.cfg

Wenn hier rootvorhanden ist, habt ihr alles richtig gemacht.