Angepinnt Schreibzugriff auf rootfs

      Schreibzugriff auf rootfs

      Moin Leutz!

      Was ich jetzt beschreibe, ist nicht ganz ungefährlich. Es geht um den Schreibzugriff auf das Dateisystem des SPH.
      Wenn man schreiben kann, kann man aber auch löschen - deshalb ist Vorsicht geboten. Auch das Ändern von Konfigurationsdateien des Routers ist so möglich, aber ein Fehler könnte eben den Roter unbootbar machen!

      Es ist zwar gut möglich, daß der SPH einen Notmechanismus besitzt, um in solchen Fällen trotzdem ein Firmware-Image einzuspielen und den Router zu reanimieren - aber noch habe ich das nicht getestet.
      -------------------------------------------------------------------------------------

      Mir war es nicht möglich, auf das Dateisystem direkt zuzugreifen, deshalb bauen wir uns eine Hintertür. Als 'root' hat man unter Anderem Schreibzugriff auf '/tmp'
      --> dort kann man arbeiten.

      Als Erstes erzeugen wir ein Verzeichnis ('rmnt') - auf diesem mounten wir das Root-Verzeichnis normal. Danach re-mounten wir diesen Mount-Point mit Schreib-/Leserechten. (aus irgendeinem Grund mußte ich es in zwei Schritten machen, aber Hauptsache es klappt ;) )

      Danach haben wir auf '/tmp/rmnt/' unsere 'Hintertür'!
      Dort kann man nun auch Dateien ändern, löschen oder zusätzliche einfügen.

      Am Ende un-mounten wir noch '/tmp/rmnt/' und (NACHDEM WIR GEPRÜFT HABEN, DAS ES WIRKLICH UNMOUNTED IST) entfernen den Mount-Point. (nicht das Ihr versehentlich das ganze Dateisystem löscht...)

      Für alles Folgende braucht man root. Also, wie schon beschrieben, per Config Telnet aktivieren - shell - su.

      Quellcode

      1. su
      2. cd /tmp
      3. mkdir rmnt
      4. mount -t jffs2 /dev/mtdblock0 /tmp/rmnt
      5. mount -o remount,rw /dev/mtdblock0 /tmp/rmnt

      Ab diesem Moment habt ihr unter '/tmp/rmnt/' ('rmnt' ist kurz für 'rootmount') Lese-/Schreibrechte auf das RootFS ;)

      Quellcode

      1. umount /tmp/rmnt


      Danach sollte der Ordner '/tmp/rmnt' wieder als leer erscheinen.

      Wer jetzt denkt 'warum hat er den Mount-Point ('/tmp/rmnt') nicht entfernt beim Aufräumen?':
      Ich habe den Befehl dafür weg gelassen, weil er, bei einer Unachtsamkeit, extrem gefährlich ist. (auf dem SPH existiert kein 'rmdir' - einzige Möglichkeit zum Löschen eines Ordners ist deshalb 'rm -r', aber dieser Befehl löscht dummerweise auch 'nicht-leere' Ordner)
      Deshalb lasst den Ordner '/tmp/rmnt' einfach wo er ist - ist eh ein temporäres Dateisystem und der leere Ordner verschwindet beim Neustart.

      (wenn ihr unbeding 'sauber machen' wollt, solltet ihr immer erst schauen, ob das Dateisystem wirklich 'unmounted' ist und der Ordner '/tmp/rmnt' als leer erscheint - sonst könntet ihr versehentlich euer System löschen! Der Befehl ist dann 'rm -r /tmp/rmnt')

      -------------------------------------------------------------------------------------

      Wie gesagt - seid vorsichtig!
      Das ganze ist auch wirklich nur interessant, wenn ihr einen guten Grund dafür habt und euch mit Linux zumindest halbwegs auskennt.

      HappyHacking!
      mfg, Marcus

      PS.: wer sich wundert, warum er trotzdem nicht per FTP auf das rootfs schreiben kann:
      unsere Hintertür braucht Root-Rechte - die hat der FTP-Server nicht. Man könnte zwar eventuell die Schreibrechte des Mount-Points erweitern (vor dem mount ein 'chmod 777 /tmp/rmnt' müsste gehen) - aber dann ist das Risiko hoch, durch einen versehentlichen Klick im FTP-Client sein rootfs zu zerstören...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „eMKay77“ ()

      habe das gerade ausprobiert und ein paar Strings im Routermenü ausgetauscht.... ;)
      Dabei ist aufgefallen:
      kopiert man Dateien per ftp ins rootfs setzt er die Dateirechte von 755 auf 650...
      die Folge ist bei Änderung in der GUI eine Dauerschreife......
      d.h. man muss nach dem Kopieren per ftp über telnet bei den geänderten Dateien (unterhalb /tmp/rmnt ) die Dateirechte (per chmod 755) wieder korrigieren...

      Jetzt kann man übrigens einfach die ganzen versteckten Knöpfe im engineering menü dauerhaft sichtbar machen...
      Moin!
      Das sich die Rechte ändern ist auch normal... 650 wird der Standard-Wert des FTP-Servers sein. Solche Probleme hat man immer dann, wenn man zwischen Dateisystemen mit&ohne Linux-Rechten - oder über ein Protokoll, welches keine Dateirechte berücksichtigt - Daten überträgt.
      Die Original-Rechte gehen verloren und werden durch Standard-Werte ersetzt.

      Änderungen an der GUI würde ich allerdings eher über ein Chrome-Script erledigen - ist sicherer ;)

      mfg, emkay

      eMKay77 schrieb:

      Moin!
      Das sich die Rechte ändern ist auch normal... 650 wird der Standard-Wert des FTP-Servers sein. Solche Probleme hat man immer dann, wenn man zwischen Dateisystemen mit&ohne Linux-Rechten - oder über ein Protokoll, welches keine Dateirechte berücksichtigt - Daten überträgt.
      Die Original-Rechte gehen verloren und werden durch Standard-Werte ersetzt.

      Änderungen an der GUI würde ich allerdings eher über ein Chrome-Script erledigen - ist sicherer ;)

      mfg, emkay

      war auch als Warnung gemeint, für alle die ggf nicht drauf achten ;)
      ich werde mir als nächstes den engineering Bereich als Link einbauen.
      edit: erledigt...
      jetzt komme ich per Klick ins Engineering Menü... (Das Handbuch braucht man als Mann ja ohnehin nicht ;) )


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xdjbx“ ()

      @pingpong: dachte eigentlich, vi wäre vorhanden...

      Ich mach's allerdings immer so: FileZilla (FTP-Client) -- rechte Maustaste -- Datei zum Bearbeiten/Ansehen...
      dann zieht FileZilla die Datei, Du kannst sie im Editor deiner Wahl am PC editieren. Sobald Du speicherst/den Editor schließt, fragt FileZilla, ob es die Änderungen zurück schreiben soll ;)

      ACHTUNG 1: danach muß man noch im Terminal/CLI die Dateirechte wieder korrigieren!
      FileZilla hat da so seine Probleme (bzw. der FTP-Server) --- also vorher per 'ls -la' die Dateirechte ermitteln & merken.

      ACHTUNG 2: der Editor am PC muß die Datei im selben Format (Zeichencodierung/Zeilenendekennung) speichern, indem sie vorher war!


      mfg, emkay
      Hi eMKay,

      also das ist wirklich das erste Gerät was ich sehe (bin auch schon etwas älter und 34 Jahre im IT Bereich tätig) was unter
      einem Linux läuft und keinen vi oder dergleichen an Board hat. ?(

      Muss der FTP Server noch gesondert aktiviert werden? Meldet sich nämlich nicht, wenn ich mich per FTP anmelden will.
      Ich habe den USB Stick mit ext3 formatiert. Einen Stick mit FAT32 Formatierung parallel brauche ich nicht um den FTP
      Server zu aktivieren? Stand hier irgendwo im Forum ...

      Apropos ls ... Kann man die Sortierung des ls Befehls irgendwo umstellen? Die Dateien scheinen umgekehrt sortiert zu
      sein ... Für Chinesen wohl sehr praktisch, aber für unsereinst recht ungewohnt ;)

      viele Grüße
      Michael
      @pingpong: die Kiste hat offiziell keine Shell - einen Editor drauf zu packen, wäre Platzverschwendung.
      ls ist nicht ls ;) --> Es ist das ls-applet von busybox. Ob sich das umsortieren lässt, weiß ich grad' nich. Schau mal in die Help.
      Und nööö - der SPH braucht für ftp irgendeinen Stick/Datenträger - Format egal, solange er ihn lesen kann. (nur mein bootstrap setzt ext3 voraus)

      mfg, emkay
      Hallo zusammen,

      danke euch Allen!! Schaue ich mir die Woche über an. Wenn die Zeit nicht so knapp wäre :)
      Warum die Chinesen aber die Konfig aes verschlüsseln ist schon der Hammer!

      Bin schon einmal saufroh, dass man sich endlich per telnet einloggen kann! *jubel*

      Die Geschichte mit dem USB Stick ist schon Klasse! So bleiben die Änderungen im Router
      doch überschaubar und im Fehlerfalle bootet der Router ohne Stick ganz normal ...
      Wäre ja nicht das erste Gerät, was sich bei derartigen Eingriffen verabschiedet!

      viele Grüße
      Michael

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „pingpong“ ()

      Ich mach's allerdings immer so: FileZilla (FTP-Client) -- rechte Maustaste -- Datei zum Bearbeiten/Ansehen...dann zieht FileZilla die Datei, Du kannst sie im Editor deiner Wahl am PC editieren. Sobald Du speicherst/den Editor schließt, fragt FileZilla, ob es die Änderungen zurück schreiben soll ACHTUNG 1: danach muß man noch im Terminal/CLI die Dateirechte wieder korrigieren!
      FileZilla hat da so seine Probleme (bzw. der FTP-Server) --- also vorher per 'ls -la' die Dateirechte ermitteln & merken.


      Wie komm ich mit Filezilla auf das rootfs Verzeichnis? Was muss ich bei den Verbindungsdaten angeben?

      Sorry... hier natürlich => per ftp auf rootfs kommen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bigbay“ ()

      ehm meine speedport kennt kein mount
      bin per telnet drauf
      ftp läuft auch

      su abgesetzt
      aber

      Quellcode

      1. # sh
      2. BusyBox vv1.9.1 (2016-03-02 16:48:43 CST) built-in shell (ash)
      3. Enter 'help' for a list of built-in commands.
      4. # su
      5. BusyBox vv1.9.1 (2016-03-02 16:48:43 CST) built-in shell (ash)
      6. Enter 'help' for a list of built-in commands.
      7. # mount
      8. sh: mount: not found
      9. #

      Quellcode

      1. # ls -la /bin
      2. -rwsr-xr-x 1 0 0 373188 Mar 2 10:05 busybox
      3. -rwxr-xr-x 1 0 0 8628 Mar 2 10:05 wl_server_socket
      4. -rwxrwxrwx 1 0 0 6520 Mar 2 10:05 foncontrl
      5. -rwxrwxrwx 1 0 0 3044 Mar 2 10:05 ebtables
      6. -rwxr-xr-x 1 0 0 374564 Mar 2 10:05 cadaver
      7. -rwxrwxrwx 1 0 0 4748 Mar 2 10:05 usbmount
      8. -rwxrwxrwx 1 0 0 27836 Mar 2 10:05 xtmcmd
      9. -rwxrwxrwx 1 0 0 1764480 Mar 2 10:05 voiper
      10. -rwxr-xr-x 1 0 0 178128 Mar 2 10:05 ntfs-3g
      11. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 umount -> busybox
      12. -rwxr-xr-x 1 0 0 30191 Mar 2 10:05 rtacct
      13. -rwxrwxrwx 1 0 0 10904 Mar 2 10:05 pwrctl
      14. -rwxr-xr-x 1 0 0 23880 Mar 2 10:05 acs_cli
      15. -rwxrwxrwx 1 0 0 9632 Mar 2 10:05 mirror
      16. -rwxrwxrwx 1 0 0 6772 Mar 2 10:05 ltemsg
      17. -rwxrwxrwx 1 0 0 125064 Mar 2 10:05 hybrid
      18. -rwxr-xr-x 1 0 0 30608 Mar 2 10:05 ifstat
      19. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 netstat -> busybox
      20. -rwxrwxrwx 1 0 0 18872 Mar 2 10:05 abusecmd
      21. -rwxrwxrwx 1 0 0 19404 Mar 2 10:05 ethcmd
      22. -rwxrwxrwx 1 0 0 28248 Mar 2 10:05 fapctl
      23. -rwxrwxrwx 1 0 0 53752 Mar 2 10:05 nassync
      24. -rwxrwxrwx 1 0 0 111976 Mar 2 10:05 dhcp6s
      25. -rwxrwxrwx 1 0 0 163412 Mar 2 10:05 dhcp6c
      26. lrwxrwxrwx 1 0 0 10 Mar 2 09:55 nas4not -> ../bin/nas
      27. -rwxrwxrwx 1 0 0 6512 Mar 2 10:05 bpmctl
      28. -rwxrwxrwx 1 0 0 11140 Mar 2 10:05 atpget
      29. -rwxrwxrwx 1 0 0 88472 Mar 2 10:05 xdslcmd
      30. -rwxr-xr-x 1 0 0 129688 Mar 2 10:05 wps_monitor
      31. -rwxrwxrwx 1 0 0 26900 Mar 2 10:05 ipcheck
      32. lrwxrwxrwx 1 0 0 16 Mar 2 09:55 wl_server -> wl_server_s ocket
      33. -rwxrwxrwx 1 0 0 37424 Mar 2 10:05 nascenter
      34. -rwxrwxrwx 1 0 0 362048 Mar 2 10:05 fetchmail
      35. -rwxrwxrwx 1 0 0 79000 Mar 2 10:05 nasbackup
      36. -rwxrwxrwx 1 0 0 47668 Mar 2 10:05 vlanctl
      37. -rwxrwx--- 1 0 0 928 Mar 2 09:58 startbsp
      38. -rwxrwxrwx 1 0 0 19888 Mar 2 10:05 dsldiagd
      39. -rwxrwxrwx 1 0 0 66476 Mar 2 10:05 smbpasswd
      40. -rwxrwxrwx 1 0 0 21008 Mar 2 10:05 abuseupdate
      41. -rwxr-x--- 1 2076 2076 6920 Mar 2 10:05 telnetd
      42. -rwxr-xr-x 1 0 0 16840 Mar 2 10:05 radvdump
      43. -rwxrwxrwx 1 0 0 8736 Mar 2 10:05 tr111part2
      44. lrwxrwxrwx 1 0 0 13 Mar 2 09:51 ip6tables -> xtables-mul ti
      45. -rwxrwxrwx 1 0 0 77452 Mar 2 10:05 ethswctl
      46. -rwxr-xr-x 1 0 0 387500 Mar 2 10:05 xtables-multi
      47. -rwxrwxrwx 1 0 0 351168 Mar 2 10:05 siproxd
      48. lrwxrwxrwx 1 0 0 13 Mar 2 09:51 iptables -> xtables-mult i
      49. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 traceroute6 -> busybox
      50. -rwxrwxrwx 1 0 0 43639 Mar 2 10:05 scanner
      51. -rwxrwxrwx 1 0 0 63136 Mar 2 10:05 zebra
      52. -rwxr-xr-x 1 0 0 8356 Mar 2 10:05 wlctl
      53. lrwxrwxrwx 1 0 0 10 Mar 2 09:53 tr111 -> tr111part2
      54. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 sleep -> busybox
      55. -rwxrwxrwx 1 0 0 91260 Mar 2 10:05 radvd
      56. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 ping6 -> busybox
      57. -rwxr-xr-x 1 0 0 3936 Mar 2 10:05 nvram
      58. -rwxr-xr-x 1 0 0 17908 Mar 2 10:05 nstat
      59. -rwxrwxrwx 1 0 0 6564 Mar 2 10:05 netpb
      60. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 mount -> busybox
      61. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 mknod -> busybox
      62. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 mkdir -> busybox
      63. -rwxr-xr-x 1 0 0 55520 Mar 2 10:05 lld2d
      64. -rwxrwxrwx 1 0 0 10936 Mar 2 10:05 iqctl
      65. -rwxrwxrwx 1 0 0 104256 Mar 2 10:05 esmtp
      66. -rwxrwxrwx 1 0 0 7852 Mar 2 10:05 fcctl
      67. -rwxrwxrwx 1 0 0 212835 Mar 2 10:05 cupsd
      68. -rwxr-xr-x 1 2048 2048 41616 Mar 2 10:05 dhcps
      69. -rwxrwxrwx 1 0 0 41816 Mar 2 10:05 dhcpc
      70. -rwxrwxrwx 1 0 0 42576 Mar 2 10:05 ddnsc
      71. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 chmod -> busybox
      72. -rwxrwxrwx 1 0 0 37728 Mar 2 10:05 brctl
      73. -rwxrwxrwx 1 0 0 32484 Mar 2 10:05 atcmd
      74. -rwxrwxrwx 1 0 0 88028 Mar 2 10:05 bftpd
      75. lrwxrwxrwx 1 0 0 3 Mar 2 09:58 console -> cli
      76. -rwxr-x--- 1 2189 2189 71552 Mar 2 10:05 upnp
      77. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 true -> busybox
      78. -rwxrwxrwx 1 0 0 22836 Mar 2 10:05 sntp
      79. -rwxrwxrwx 1 0 0 3104444 Mar 2 10:05 smbd
      80. -rwxrwxrwx 1 0 0 72012 Mar 2 10:05 ripd
      81. -rwxrwxrwx 1 0 0 243988 Mar 2 10:05 pppc
      82. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 ping -> busybox
      83. -rwxrwxrwx 1 0 0 903168 Mar 2 10:05 nmbd
      84. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 kill -> busybox
      85. -rwxrwxrwx 1 0 0 59320 Mar 2 10:05 ipdr
      86. -rwxrwxrwx 1 0 0 45812 Mar 2 10:05 igmp
      87. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 grep -> busybox
      88. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 echo -> busybox
      89. -rwxr-xr-x 1 0 0 35228 Mar 2 10:05 eapd
      90. -rwxr-x--- 1 2065 2065 105724 Mar 2 10:05 cwmp
      91. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 date -> busybox
      92. -rwxr-xr-x 1 0 0 152936 Mar 2 10:05 acsd
      93. -rwxr-xr-x 1 2073 2073 236320 Mar 2 10:05 web
      94. -rwsr-xr-x 1 0 0 41928 Mar 2 10:05 upg
      95. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 tar -> busybox
      96. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 sed -> busybox
      97. -rwxrwxrwx 1 0 0 5736 Mar 2 10:05 oam
      98. -rwxr-xr-x 1 0 0 56824 Mar 2 10:05 nas
      99. -rwxrwxrwx 1 0 0 38360 Mar 2 10:05 mld
      100. -rwxrwxrwx 1 0 0 34632 Mar 2 10:05 mic
      101. -rwxrwxrwx 1 0 0 16776 Mar 2 10:05 log
      102. -rwxrwxrwx 1 0 0 83228 Mar 2 10:05 dns
      103. -rwxrwxrwx 1 0 0 58448 Mar 2 10:05 dms
      104. -rwxrwxrwx 1 0 0 1354340 Mar 2 10:05 cms
      105. -rwxr-xr-x 1 2162 2162 158512 Mar 2 10:05 cli
      106. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 cat -> busybox
      107. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 ash -> busybox
      108. lrwxrwxrwx 1 0 0 5 Mar 2 09:55 wl -> wlctl
      109. -rwxrwxrwx 1 0 0 134 Feb 17 12:22 sw
      110. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 su -> busybox
      111. -rwxr-xr-x 1 0 0 63068 Mar 2 10:05 ss
      112. -rwxr-xr-x 1 0 0 226388 Mar 2 10:05 tc
      113. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 sh -> busybox
      114. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 rm -> busybox
      115. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 ps -> busybox
      116. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 mv -> busybox
      117. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 ls -> busybox
      118. -rwxr-xr-x 1 0 0 205952 Mar 2 10:05 ip
      119. -rwxrwxrwx 1 0 0 217 Feb 17 12:22 dw
      120. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 df -> busybox
      121. lrwxrwxrwx 1 0 0 7 Mar 2 09:49 cp -> busybox
      122. drwxr-xr-x 18 0 0 0 Aug 14 20:08 ..
      123. drwxrwxrwx 2 0 0 0 Mar 2 10:05 .