- Mitglied seit
- 21 Jan 2007
- Beiträge
- 659
- Punkte für Reaktionen
- 14
- Punkte
- 18
Hallo,
bei der 7520/7530 habe ich einen Fehler in der Benutzerverwaltung festgestellt.
Das Problem tritt ab der 7.2x Firmware bei Fritzbox 7520/7530 (ARM Prozessor) auf. Cuma/fda hat den Preload von libctlmgr ab 7.2x für viele/alle? Geräte entfernt, da unterschiedliche libc Versionen für AVM (1.0.31) und Freetz (1.0.37) verwendet werden. Der Fehler hat mit modusers primär nichts zu tun und kann darin nicht gelöst werden. In libctlmgr sieht man, wofür dieses Modul verantwortlich ist. Die vom ctlmgr aufgerufene libc-Funktion rename() wird durch den Aufruf eines speziellen Codes aus libctlmgr ersetzt, worin das Umbenennen der Datei /etc/passwd.tmp in /etc/passwd abgefangen und stattdessen modusers update aufgerufen wird. Das wird deshalb gemacht, da der ctlmgr in bestimmten Situationen /etc/passwd mit den ihm bekannten AVM Benutzern überschreibt. Freetz Benutzer sind dem ctlmgr nicht bekannt. Über den Aufruf von modusers update anstelle Ausführung von rename der vom ctlmgr erzeugten passwd.tmp Datei werden die Freetz Benutzer wieder eingetragen, bevor passwd überschrieben wird. Deshalb ist dieser Hook zwingend erforderlich. Als Lösung sehe ich nur die Verwendung der gleichen libc Version in Freetz wie in der AVM FW, um preload von libctlmgr zu reaktivieren.
@olistudent , siehst Du eine andere Möglichkeit, das Problem zu lösen, wenn weiterhin unterschiedliche libc Versionen für AVM und Freetz verwendet werden?
Anmerkung: Es kann natürlich sein, dass die Aktualisierung der Benutzer in /etc/passwd durch den ctlmgr bei der 7590 funktioniert, weil es aufgrund von musl vs. libc anders implementiert wurde. Ggf. sind weitere Boxen von diesem Fehler in freetz-ng betroffen.
Testablauf:
ssh fritz.box
adduser test -G users -h /var/media/ftp
passwd test
modusers save
modsave flash
# Nachsehen, ob Benutzer test in /etc/passwd, /etc/group und /etc/shadow vorhanden ist.
reboot
# Neustart abwarten und in /etc/passwd nachsehen, ob der Benutzer test vorhanden ist oder nicht. Benutzer test befindet sich weiterhin in /etc/group und /etc/shadow. Deshalb kann dieser Benutzer nicht neu angelegt werden. Korrektur muss mit einem Editor manuell erfolgen. Danach müsst Ihr wieder modusers save; modsave flash ausführen, damit die Änderungen persistent gespeichert werden.
PS: Ich habe cuma/fda über den Fehler informiert. Ihr könnt das im inzwischen geschlossenen Issue im freetz-ng GIT nachlesen.
bei der 7520/7530 habe ich einen Fehler in der Benutzerverwaltung festgestellt.
Das Problem tritt ab der 7.2x Firmware bei Fritzbox 7520/7530 (ARM Prozessor) auf. Cuma/fda hat den Preload von libctlmgr ab 7.2x für viele/alle? Geräte entfernt, da unterschiedliche libc Versionen für AVM (1.0.31) und Freetz (1.0.37) verwendet werden. Der Fehler hat mit modusers primär nichts zu tun und kann darin nicht gelöst werden. In libctlmgr sieht man, wofür dieses Modul verantwortlich ist. Die vom ctlmgr aufgerufene libc-Funktion rename() wird durch den Aufruf eines speziellen Codes aus libctlmgr ersetzt, worin das Umbenennen der Datei /etc/passwd.tmp in /etc/passwd abgefangen und stattdessen modusers update aufgerufen wird. Das wird deshalb gemacht, da der ctlmgr in bestimmten Situationen /etc/passwd mit den ihm bekannten AVM Benutzern überschreibt. Freetz Benutzer sind dem ctlmgr nicht bekannt. Über den Aufruf von modusers update anstelle Ausführung von rename der vom ctlmgr erzeugten passwd.tmp Datei werden die Freetz Benutzer wieder eingetragen, bevor passwd überschrieben wird. Deshalb ist dieser Hook zwingend erforderlich. Als Lösung sehe ich nur die Verwendung der gleichen libc Version in Freetz wie in der AVM FW, um preload von libctlmgr zu reaktivieren.
@olistudent , siehst Du eine andere Möglichkeit, das Problem zu lösen, wenn weiterhin unterschiedliche libc Versionen für AVM und Freetz verwendet werden?
Anmerkung: Es kann natürlich sein, dass die Aktualisierung der Benutzer in /etc/passwd durch den ctlmgr bei der 7590 funktioniert, weil es aufgrund von musl vs. libc anders implementiert wurde. Ggf. sind weitere Boxen von diesem Fehler in freetz-ng betroffen.
Testablauf:
ssh fritz.box
adduser test -G users -h /var/media/ftp
passwd test
modusers save
modsave flash
# Nachsehen, ob Benutzer test in /etc/passwd, /etc/group und /etc/shadow vorhanden ist.
reboot
# Neustart abwarten und in /etc/passwd nachsehen, ob der Benutzer test vorhanden ist oder nicht. Benutzer test befindet sich weiterhin in /etc/group und /etc/shadow. Deshalb kann dieser Benutzer nicht neu angelegt werden. Korrektur muss mit einem Editor manuell erfolgen. Danach müsst Ihr wieder modusers save; modsave flash ausführen, damit die Änderungen persistent gespeichert werden.
PS: Ich habe cuma/fda über den Fehler informiert. Ihr könnt das im inzwischen geschlossenen Issue im freetz-ng GIT nachlesen.
Zuletzt bearbeitet: