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-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.