Sie sind hier : Homepage →  2008 - Die Buffalo NAS Box→  Das LS System "Booten"

00 - Juli 2008 - Hier geht es los:
Das Linux Boot System des LS live NAS Servers:

Bei den sogenannten Embedded Systemen ist RAM (selbst 128 MB) immer knapp. Also wird eine abgeschminkte Firmware generiert. Als Firmware bezeichet man bei diesen Systemen die gesamte Betriebssystem (und somit die "embedded Linux") Umgebung. Und die ist nicht so einfach vergleichbar mit einem wesentlich umfangreicheren Suse 10 oder 11 oder Debian oder redhat oder Ubuntu zum Beispiel.

Viele Funktionen oder Dienste werden bereits im Kernel eingebunden. Vom Kernel wird beim Booten folgende Datei aufgerufen:

  1. zuerst Script 1 : "/etc/inittab"
  2. dort wird auf folgenden Script 2 verwiesen: "/etc/init.d/rcS"

und in diesem Script 2 wird bei uns (dann später) zum Beispiel der ssh Dämon hinzugefügt. (siehe weiter unten : /usr/local/sbin/sshd)

02 - Der Inhalt des /etc/inittab Script 1 :

::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty -L ttyS0 115200 vt100
::restart:/sbin/init
::shutdown:/etc/init.d/rcDown
::shutdown:/bin/umount -r

04 - Der Inhalt des /etc/init.d/rcS Script 2 :

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
exec_sh()
{
        echo "=====  exec:$1  ====="
        /etc/init.d/$1 start
}
echo "--- rcStart (hddroot) ---"
mount proc /proc -t proc
# for NFS
TMP=`grep /dev/root /proc/mounts|grep nfs`
if [ "$TMP" != "" ]; then
        echo "nfs root mode."
        miconapl -b -a boot_flash_ok
fi
/sbin/hwclock -s
# date
ldconfig
/sbin/depmod -a
echo "** step1 **"
for cmd in checkroot.sh create_devlink.sh procps.sh devpts.sh sethostname.sh restore_config.sh
do
        exec_sh $cmd
done

echo "** step2 **"
for cmd in networking.sh syslog.sh inetd.sh kernelmon.sh miconmon.sh mount_share.sh diskmon.sh errormon.sh hotplug.sh ups
do
        exec_sh $cmd
done
# telnetd for debug
# /usr/sbin/telnetd
# das ist neu dazugekommen
/usr/local/sbin/sshd
#
echo "** step3 **"
for cmd in micon_setup.sh atalk.sh ftpd.sh httpd.sh lprng.sh smb.sh pcastd.sh epg.sh directcopy.sh clientUtil_servd.sh lsprcvd.sh daemonwatch.sh cron.sh ltbo
do
        exec_sh $cmd
done
#
insmod "/lib/modules/usblp.ko"
#fin.
exec_sh bootcomplete.sh

06 - Viele Linux Standard-Befehle sind in der sogenannten "BusyBox" zusammengefasst bzw. zusammen kompiliert:

Die BusyBox unter Linux ist so etwas ähnliches wie der uralte MS-DOS Befehlsinterpreter, der auch alle "gemeinen" DOS Befehle wie copy, dir, delete, mkdir usw. enthalten hatte. (Im Standard Linux ist jeder Kommandozeilen- Befehl in einer eigenen (Kommando-) Datei untergebracht.)

 

In der LS live zur Zeit definierte "functions":

[, [[, addgroup, adduser, ash, awk, basename, bunzip2, busybox, bzcat, cat,  chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, crond, crontab, cut, date, dd, deallocvt, delgroup, deluser, df, dirname, dmesg, du, echo, egrep, env, expr, false, fdflush, fgrep, free, freeramdisk, getopt, getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid, hostname, hwclock, id, ifconfig, inetd, init, install, kill, killall, length, linuxrc, ln, logger, login, logname, ls, md5sum, mkdir, mkfifo, mknod, mkswap, mktemp, more, mv, nice, od, openvt, passwd, pidof, ping, poweroff, printf, ps, pwd, readlink, realpath, reboot, reset, rm, rmdir, route, run-parts, sed, seq, sh, sleep, sort, strings, stty, sum, swapoff, swapon, sync, sysctl, tail, tar, tee, telnetd, test, time, top, touch, tr, true, tty, uname, uniq, uptime, usleep, vi, watch, wc, which, who, whoami, yes, zcat

08 - ausführbare Befehle (=Programme)

Das Verzeichnis [NAS-500GB-Serv - root] /bin $ zeigt (bei uns) diese Dateien:

lrwxrwxrwx    1 root     root            7 Feb 21 15:26 addgroup -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 adduser -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 ash -> busybox
-rwxr-xr-x    1 root     root       619848 Jan 31  2006 bash
lrwxrwxrwx    1 root     root            4 Feb 21 15:26 bash2 -> bash
-rwxr-xr-x    1 root     root       430088 Feb 13  2007 busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 cat -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 chgrp -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 chmod -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 chown -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 cp -> busybox
-rwxr-xr-x    1 root     root        16844 Jan 31  2006 cut
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 date -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 dd -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 delgroup -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 deluser -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 df -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 dmesg -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 echo -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 egrep -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 false -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 fdflush -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 fgrep -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 getopt -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 grep -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 gunzip -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 gzip -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 hostname -> busybox

lrwxrwxrwx    1 root     root           16 Jun  1 02:53 joe -> /usr/joe/bin/joe

lrwxrwxrwx    1 root     root            7 Feb 21 15:26 kill -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 ln -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 login -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 ls -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 mkdir -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 mknod -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 mktemp -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 more -> busybox
-rwxr-xr-x    1 root     root        62268 Apr 28  2006 mount
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 mv -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 nice -> busybox
-rwxrwxrwx    1 root     root      2707877 May  4  2006 nslookup
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 pidof -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 ping -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 ps -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 pwd -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 rm -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 rmdir -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 run-parts -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 sed -> busybox
lrwxrwxrwx    1 root     root            4 Feb 21 15:26 sh -> bash
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 sleep -> busybox
-rwxr-xr-x    1 root     root        46084 Jan 31  2006 sort
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 stty -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 sync -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 tar -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 touch -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 true -> busybox
-rwxr-xr-x    1 root     root        28524 Apr 28  2006 umount
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 uname -> busybox
-rwxr-xr-x    1 root     root       114665 Jun 11  2006 unzip
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 usleep -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 vi -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 watch -> busybox
lrwxrwxrwx    1 root     root            7 Feb 21 15:26 zcat -> busybox

Bisher sind nur mc und joe "nachgerüstet" worden. Der symbolische link für den mc steht an anderer Stelle im Pfad. Hier die Zeile aus dem Environment:

PATH= /bin: /sbin: /usr/bin: /usr/sbin: /usr/local/bin: /usr/local/sbin

Somit sind alle ausführbaren Dateien aus diesen Verzeichnissen in jedem beliebigen anderen Verzeichnis auf diesem Server aufrufbar, genau wie bei DOS oder Windows.

09 - weitere ausführbare Befehle (= Programme) stehen hier:

Alle in diesen Verzeichnissen vorhandene Programme und Symlinks sind überall in der Commandline aufrufbar:

der globale PATH enthält =

  • /bin:
  • /sbin:
  • /usr/bin:
  • /usr/sbin:
  • /usr/local/bin:
  • /usr/local/sbin


Und damit ist es sogar ähnlich zum guten alten DOS 6 von MS.

20 - Aug 2008 Erste Erfahrungen mit der LS live mit 128MB

In der sogenannten "default" Konfiguration (also noch ohne FTP - Dienst) jedoch jetzt schon mit dem SSH Daemon werden ca. ??MB RAM belegt, das ist ist etwa die ?????? von den vorhandenen (onboard) 128MB und die sind aufgelötet wie auch der Flash-Speicher und somit nicht ausbaubfähig!

Aktivieren Sie (zusätzlich) den normalen FTP Daemon, springt das Ganze schlagartig auf ?? 111 MB ??. Da muß man sich schon genau überlegen, ob man FTP wirklich braucht, wenn man aus dem ganz normalen Windows 2000 oder XP heraus sowieso auf die öffentlichen (shared) Laufwerke und Verzeichnisse des Servers zugreifen kann.

Auf den SSH Zugang darf ich eigentlich nicht mehr verzichten, eher dann auf die Web- Konfiguration per Apache Server (jedenfalls, wenn meine Grundverzeichnisse einmal angelegt sind). Jedoch verkehrt ist die Oberfläche eines Webservers nicht.

Nachtrag Feb 2009 - stimmt alles nicht mit dem RAM.
Das Programm "top" zeigt vermutlich Unsinn an. Mit (dem nachinstallierten) "htop" sieht man in unserer Normalkonfiguration mit APACHE, SSH, SAMBA ca. 22MB von 123. Mit aktiviertem "ftp" sind es dann ca. 27MB von 123.

 

24 - Backdoor und "reboot" Optionen

Sicher gehen die Buffalo Programmierer aus bitterer leidvoller Erfarung davon aus, daß überwiegend "Dummies" (also die Kunden in diesen Blödmärkten) mit diesen Boxen arbeiten. Und sicher war das einmal anders, bevor die Kollegen vom weltweite Support laut und lang anhaltend "Hilfe" und vermutlich auch "Erbarmen" geschrien hatten. Mit Sicherheit hatten sich Zuviele selbst ausgesperrt.

Also über das Webinterface kann man, wenn man das "admin" Kennwort (noch) hat bzw. weiß, die ganze Kiste auf (oder in) den Auslieferungszustand zurücksetzen. In den diversen Verzeichnissen haben wir unterschiedliche Shell-Scripte gefunden, die anscheinend (beim Neustart) mit root-Rechten alles überzubügeln vermögen, das je ein Admin angelegt haben konnte.

Das Ganze funktioniert (laut Handbuch) auch mit der Reset Taste auf der Gehäuserückseite. Und diese Logik muß im U-Boot Loader im Flash untergebracht sein.

Wenn man sich also nahezu endgültig ausgesperrt hat, kann man (wir haben das noch nicht geprüft) die Werkseinstellungen wieder herstellen.

Selbst, wenn man den (symbolischen) telnetd Daemon umgebogen oder gelöscht hat, könnte man mit Tricks (Java Programmierung) Telnet über die BusyBox aktivieren und wieder einen "root" Zugang zum System erlangen. (So wäre es die Theorie.)

30 - Der Weg in das Innenleben der Buffalo Linkstation Live

Startseite -- © 2001/2022 - Copyright by Dipl.-Ing. Gert Redlich / Germany - D-65191 Wiesbaden - Telefon-Nummer - Impressum