passwd auf Fritz!Box / Speedport W501V

RoyceMcKnight

Neuer User
Mitglied seit
22 Aug 2006
Beiträge
186
Punkte für Reaktionen
0
Punkte
0
Bin wieder am Firmware basteln. Versuche momentan dropbear auf meinem Speedport zu installieren, das ganze funzt auch soweit, nur habe ich ein Problem:

Da kein Passwort für root gesetzt ist, kann ich mich nicht per ssh einloggen.

Wenn ich verusche, auf der Box dass root Passwort mittels passwd zu setzen, dann passiert folgenden:

Code:
# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.
Re-enter new password:
passwd: An error occurred updating the password file.

#

Wenn ich das ganze per strace verfolge erfahre ich:

Code:
umask(077)                              = 022
setuid(0)                               = 0
access("/etc/shadow", F_OK)             = 0
open("/etc/shadow", O_RDWR)             = 3
ioctl(3, TIOCNXCL, 0x7fff6910)          = -1 ENOTTY (Inappropriate ioctl for device)
fstat(3, {st_mode=S_IFREG|0755, st_size=26, ...}) = 0
fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
fstat(3, {st_mode=S_IFREG|0755, st_size=26, ...}) = 0
umask(077)                              = 077
open("/etc/shadow-", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EROFS (Read-only file system)
umask(077)                              = 077
fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
close(3)                                = 0
rt_sigaction(SIGPIPE, {SIG_DFL}, {SIG_DFL}, 16) = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 3
connect(3, {sa_family=AF_FILE, path="/dev/log"}, 10) = 0
time([1160516959])                      = 1160516959
getpid()                                = 656
write(3, "<36>Oct 10 23:49:19 passwd[656]:"..., 78) = 78
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 16) = 0
write(2, "passwd", 6passwd)                   = 6
write(2, ": ", 2: )                       = 2
write(2, "An error occurred updating the p"..., 46An error occurred updating the password file.
) = 46
write(2, "\n", 1
)                       = 1
exit(1)                                 = ?
Process 656 detached
#

Sprich genauer:
Code:
open("/etc/shadow-", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EROFS (Read-only file system)

Passwd verweigert also den Dienst, da /etc/shadow in einem read-only filesystem liegt.

Aber:
Code:
# ls -al /etc/shadow
lrwxrwxrwx    1 root     root           17 Oct 10 23:36 /etc/shadow -> ../var/tmp/shadow
# mount
/dev/mtdblock/0 on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /var type ramfs (rw)
#

/etc/shadow ist ja nur ein symlink auf /var/tmp/shadow, und /var is ja rw.

Nur scheint passwd das nicht zu raffen.

Was gibt es da für Lösungen, oder wie wurde das im ds-mod gelöst?


Grüße

Mike
 
2 Lösungen am Start:

1. busybox sources so patchen dass er den read-only check auslässt
2. busybox sources so patchen, dass er die pfade nach /var/tmp/passwd und /var/tmp/shadow anpasst.

Beides funzt, aber Lösung 2 ist die saubere, werde das verwenden.

Dropbear funzt jetzt auch, mit login ;)

in diesem Sinne: *closed* ;)
 
3. Lösung: Zeile von Hand (bzw. per debug.cfg) in die passwd eintragen

MfG Oliver
 
Das steht immer da, auch wenn du 1000 Zeichen eintippst. ;-)

MfG Oliver
 
Die Lösung von Oliver halte ich für die sinnvollste Lösung. Berechne Dir einen MD5-Hash für das Passwort z.B. mit Linux und füge die Zeile dann einfach manuell in die shadow ein.

Grüße

Vierstein
 
Naja. Kommt auf die Sicht an.
Da Mike ja was größeres mit dem W501V vorhat sind auch die ersten beiden Lösungen machbar.

MfG Oliver
 
Jo ich habe Busybox so gepatcht, dass die Pfade entpsrechend nach /var/tmp geändert wurden. Das ist imho die beste Lösung, passwd funktioniert jetzt prächtig, Dropbear Login auch.
Nächste Woche nehme ich mir dann das WLAN vor, das klappt noch nicht so ganz. Momentan ist halt etwas schlecht mit der Zeit, bis Samstag wird aufgebaut für Party ;)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.