uwchmod: Fix für das Firmwareproblem von D-Link Geräten

Seit langer Zeit wird mir immer wieder berichtet, dass aktuelle D-Link Geräte immer und immer wieder den gleichen Bug in der Firmware haben. Dieser Bug setzt bei jedem Neustart und bei jedem Anschluss eines USB-Gerätes einen chmod 777 auf die Festplatten ab. Wenn man auf seinem NAS fun_plug installiert hat, führt dies dazu, dass unter anderem der SSH-Server nicht mehr startet und ansonsten ALLE Services von fun_plug gestartet werden.

Um das zu umgehen, habe ich eine Lösung gebastelt, die auf einer Idee von KyleK aufbaut. Mein Paket ersetzt die Datei /bin/chmod durch ein Script, welches Prüft, ob der chmod auf eine der Festplatten (/mnt/USB/USB* oder /mnt/HD/HD*) abgesetzt wird. Ist dies der Fall, so wird der chmod einfach übergangen (also nicht durchgeführt). Wenn dies nicht der Fall ist, so wird der chmod regulär ausgeführt.

Wichtig: Bei Non-Dlink-Geräten wird die Installation einfach nicht ausgeführt, insofern ist das Paket dort ungefährlich!

So wirds installiert:

slacker -UaA uli:uwchmod

Hinweis: Wenn du ein Firmware-Upgrade durchführst, musst du das nochmals durchführen. Da bei einem Upgrade die Datei /bin/chmod wieder neu geschrieben wird, wäre sonst mein Fix weg.

Veröffentlicht von

17 Gedanken zu „uwchmod: Fix für das Firmwareproblem von D-Link Geräten“

  1. Vielen Dank, dein Einsatz ist wirklich großartig.

    Leider hat der Fix nur kurzzeitig für den gestrigen Abend geholfen, heute früh wollte ich sehen warum meine Cronjobs nicht gestartet sind und hatte wieder den Fehler beim Login über SSH (Verbindung abgewiesen) bei meinem 320L.

    1. Hi Tom,

      ich habe dir gestern gemailt, ich vermute, dass dein Problem nichts mit dem Fix oder ähnlichem zu tun hat. Antworte mir einfach zur Problemlösung. Die finale Lösung posten wir dann hier in den Kommentaren.

      Viele Grüße,
      Uli

    2. Zum Thema cronjobs beim DNS320L, diese werden einfach nach ein paar Stunden geplattet und gehen dann nicht mehr. Aber auch dafür gibt es eine sehr einfache Lösung. Man trägt die Jobs direkt per Hand in die Configurationsdatei in der Rubrik „crond“ ein, damit sind diese quasi dauerhaft eingebrannt und überleben auch jeden Neustart. Einfach am vorhandenen Syntax orientieren und eigene Einträge einbauen.

  2. Dieser Fix ist eine nette Idee, aber nicht unbedingt notwendig, es reicht doch einfach beim einbinden einer neuen Funktion den Ausführenflag mit in die „fun_plug“ Datei einzubinden und zwar direkt hinter dem Herstellen des ffp-Links. Beispielhaft.

    # create /ffp link
    echo "ln -snf $FFP_PATH /ffp"
    ln -snf $FFP_PATH /ffp
     
    ## Fix for DNS320L:START
    chmod 600 /ffp/etc/ssh/ssh*key
    chmod 600 /ffp/etc/rsyncdsecretsfile
    chmod 755 /ffp/sbin/sshd
    chmod 755 /ffp/var/lib/sshd
    chmod 644 /ffp/start/*.*
    chmod a+x /ffp/start/sshd.sh
    chmod a+x /ffp/start/optware.sh
    chmod a+x /ffp/start/dnsmasq.sh
    chmod a+x /ffp/start/fail2ban.sh
    chmod a+x /ffp/opt/optware/etc/init.d/S99asterisk
    chmod a+x /ffp/opt/optware/etc/init.d/S01denyhosts
    chmod 600 /ffp/etc/msmtp/msmtp.conf
    ln -s /ffp/opt/optware/bin/python2.7 /usr/bin/python
    ## Fix for DNS320L:ENDE
    1. Hi Tom (M),

      deine Lösung behebt aber dennoch nur die Auswirkungen, nicht die Ursache, wohingegen die obige Lösung, zumindest die Ursache unterbindet? Bei jeder änderung, wie beispielsweise der Einrichtung von lighttpd usw. wird diese Liste dann immer länger.

      Viele Grüße,
      Uli

    1. Ah danke, hab das gemacht und Installation wurde durchgeführt.
      SSH geht aber nach wie vor nicht?
      Versuch den SSH Server zu starten schlägt fehl mit:
      „Permissions 0777 for ‚/ffp/etc/ssh/ssh_host_dsa_key‘ are too open.“

      1. Schau mal nach oben (27. Februar 2013 um 9:36 Uhr) und gib einmalig die Befehle per Hand ein (## Fix for DNS320L:START, die nächsten vier Zeilen).

      1. Habe mir das oben noch mal durch gelesen. Hast recht. Trotzdem bekloppt das ich als Anonymer Zugriff habe auf die USB-Platte. Im Webinterface lässt sich das jedenfalls nicht ändern. Muss ich mir wohl mal lighting, oder wie das heiß, installieren.

        1. Es liegt an der Freigabe vom DNS-320. Die Rechte können über das Webinterface nicht geändert werden. Ich werde mir ein Script basteln.

  3. Hat schon jemand nen Fix für die USB-HDD Einbindung was die Rechte angeht?

    Würde meine USB-HDD nämlich auch gern normal mit Rechten einbinden, und nicht mit vollen Rechten für Anonymous freigeben… 🙂

    GreeZ iSp33dy

  4. Hallo,

    ich dachte ich teil hier einfach mal meine Erfahrung zum recht neuen DNS-327L, da hier dazu noch nichts steht und es ggf. noch für andere interessant sein kann:

    Vor der Installation von fun_plug 0.7 hab ich mal die UNIX-Rechte einer Beispieldatei unter die Lupe genommen um zu sehen, ob der hier besagte Bug bei der DNS-327L auch besteht (WebInterface, Handbuch etc. ist nahezu identisch zur DNS-320L). Nach mehrfachen Neustarts konnte ich von dem besagten Bug nichts erkennen, die Rechte rutschten nicht auf 777. Auch das Mounten eines USB-Laufwerks triggert diesen Fehler bei mir nicht.

    Bei der Installation von fun_plug 0.7 hab ich den Schritt mit diesem Patch einfach mal ausgelassen (ich fuhrwerke ungern in den Dateien der Originalfirmware rum, wenns sich vermeiden lässt) und seitdem keine Probleme. Werden also nur die gewollten ffp Module geladen und SSH geht weiterhin.

    Vielleicht hilft die Info dem ein oder anderen mit ner DNS-327L Neuanschaffung 😉

    Danke für die gute Anleitung auf meinem Fall! Schaue hier schon seit meiner DNS-323 gerne regelmäßig vorbei 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.