.titleBar { margin-bottom: 5px!important; }

passwd auf Fritz!Box / Speedport W501V

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von RoyceMcKnight, 10 Okt. 2006.

  1. RoyceMcKnight

    RoyceMcKnight Neuer User

    Registriert seit:
    22 Aug. 2006
    Beiträge:
    186
    Zustimmungen:
    0
    Punkte für Erfolge:
    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. RoyceMcKnight

    RoyceMcKnight Neuer User

    Registriert seit:
    22 Aug. 2006
    Beiträge:
    186
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    3. Lösung: Zeile von Hand (bzw. per debug.cfg) in die passwd eintragen

    MfG Oliver
     
  4. base2khid

    base2khid Neuer User

    Registriert seit:
    6 Dez. 2005
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hat das keiner gesehen ?
     
  5. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Das steht immer da, auch wenn du 1000 Zeichen eintippst. ;-)

    MfG Oliver
     
  6. Vierstein

    Vierstein Neuer User

    Registriert seit:
    22 Apr. 2004
    Beiträge:
    48
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  7. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  8. RoyceMcKnight

    RoyceMcKnight Neuer User

    Registriert seit:
    22 Aug. 2006
    Beiträge:
    186
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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 ;)