Hiawatha webserver auf Fritz!OS 6.50

Hiiri

Neuer User
Mitglied seit
7 Nov 2016
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Seit geraumer Zeit läuft auf meiner Fritz!Box 7362SL Freetz auf Basis von Fritz!OS 6.30 zusammen mit PHP und dem Hiawatha webserver.
Nun möchte ich auf das aktuelle Fritz!OS 6.50 umsteigen ohne dabei auf ein Freetz-Image zu setzen.
Dank des modfs-Skrips läuft auch (fast) alles bestens. Die nötigen Binaries von PHP und Hiawatha habe ich von Freetz übernommen.
Leider verweigert aber der Hiawatha webserver (10.4) seinen Dienst mit der Fehlermeldung: "Error initializing ChallengeClient module."
Im dortigen Forum wurde vorgeschlagen die Berechtigungen von "/dev/random" zu überprüfen (https://www.hiawatha-webserver.org/forum/topic/1860).
Ein "chmod 777 /dev/random" brachte jedoch keine Lösung.
Das Deaktivieren des ChallengeClient-Moduls im Binary bringt folgende Fehlermeldungen: "Warning: error redirecting stdin" und "Warning: error redirecting stdout". (https://www.hiawatha-webserver.org/forum/topic/2460)
Der Hiawatha-Prozess läuft dann, jedoch nicht meine Webseite und ich bekomme auch keine Logeinträge für eine Fehleranalyse.

Hat jemand einen Tipp?
 
Zuletzt bearbeitet:
Es scheint als hätte mein neu angelegter Benutzer, der PHP und Hiawatha ausführen soll, überhaupt keine Berechtigungen auf irgendetwas zuzugreifen.
Über die "debug.cfg" lasse ich die entsprechenden Daten in "/tmp/passwd", "/tmp/group" und "/tmp/shadow" während des Startens der Box eintragen.

Habe ich etwas übersehen? Fällt dazu vielleicht jemandem etwas ein?
 
Zuletzt bearbeitet:
Du magst Dir ja etwas verloren vorkommen, aber solange das so wenig greifbare Informationen sind, weiß man ja auch nicht so richtig, wie man Dir helfen soll. Eine eigene Installation, um das Problem nachzustellen, fällt für mich definitiv aus.

Allerdings zeigt schon der erste Blick in die Quellen (in challenge.c), daß der Tipp mit /dev/random vielleicht schon etwas älter ist ... die 10.4, die ich gerade mal spaßeshalber geladen habe, verwendet schon mal /dev/urandom.

Da steht zwar bei meiner 7490 auch "666" (a+rw) bei den Rechten, aber vielleicht fehlt das ja in der 7362SL - ggf. sogar das Device.

Ansonsten kann das mit dem Nutzer ja auch nicht so ganz stimmen, daß er nirgendwo zugreifen darf ... wie startet dann der Server? Soweit ich das gesehen habe (beim flüchtigen Durchsehen) ändert der ja nicht die UID oder GID zur Laufzeit, oder?

Vielleicht übersetzt Du den einfach mal mit der Debug-Ausgabe - dann kann man zumindest mal mehr sehen (ich hoffe mal, daß da setuid/setgid auch protokolliert würde).

Jedenfalls ist es tatsächlich nicht so sehr viel außer dem Lesezugriff auf /dev/urandom, was nach den Quellen (init_challenge_module() in challenge.c ist die aufgerufene Funktion) schiefgehen könnte und dann mußt Du eben mal probieren, ob der verwendete User an das Device kommt oder nicht - das muß ja nicht zwnagsläufig aus dem gestarteten Server heraus getestet werden.
 
Gerne gebe ich mehr Informationen. Nur leider habe ich nicht viele, weil es mir selber alles komisch vorkommt.

Also "/dev/urandom" besitzt bei mir auch die Rechte "666".
Die Warnungen bei deaktiviertem ChallengeClient-Modul deuten anscheinend auf einen verweigerten Zugriff von "/dev/null" (hat ebenfalls "666") hin.
"/dev" selber hat "755"

Testweise habe ich nun PHP und Hiawatha (
die Funktionen "parse_userid" und "parse_groupid" in der "userconfig.c" auf "return 1" geändert) als root laufen: Geht ohne Probleme!
Dies heißt für mich laienhaft ausgedrückt, dass der neue Benutzer nicht die Rechte bekommt, die er eigentlich haben soll.

Mit welchem Befehl teste ich am besten, ob der Benutzer an das Device kommt?
 
Vielleicht fangen wir mal damit an, ob da überhaupt Deinerseits die richtigen Einträge zu den Dateien in /tmp hinzugefügt werden.

Vielleicht versuchst Du es ja mal mit der BusyBox aus dem "modfs"-Archiv (ist statisch gelinkt) auf der Box, ob der Benutzer und die Gruppe richtig eingetragen ist.

Erstens enthält diese BusyBox auch die Kommandos "addgroup" und "adduser", die könnte man anstelle des "externen" Änderns der Benutzerdateien schon mal verwenden. Die AVM-Komponenten schreiben ja die Benutzerverwaltung ab und an mal neu, wenn ich mich richtig erinnere - irgendwo in Freetz habe ich mal Code gesehen, um das Erstellen von /etc/passwd (und ggf. weiterer) in einen entsprechenden Wrapper zu verpacken. Ich würde also erst einmal prüfen, ob der Benutzer tatsächlich existiert und die erwartete ID hat und das auch als einziger, usw. ... praktisch komplette Plausibilitätsprüfung Deiner Änderungen. Die BB enthält u.a. den "httpd", der beim Start die Angabe von Benutzer und Gruppe erlaubt. Mit dem könnte man auch testen, ggf. ist der geschwätziger, wenn er nicht umschalten kann auf Deinen neuen Benutzernamen. Wenn nicht, sind die Applets aus den "Debian utilities" (wie sie heißen, mußt Du selbst mal mit "make menuconfig" für eine BusyBox nachsehen) in jedem Falle auch noch vorhanden, diese ganzen Programme zur Steuerung von Daemons können garantiert auch setuid/setgid irgendwie machen und man kann mit denen testen.

Hast Du denn überhaupt die passende "ServerId"-Zeile in der Konfiguration? Vielleicht hat sich ja auch da etwas geändert - nach der Manpage ist der Standardwert 65534:65534 für UID:GID, was normalerweise für "nobody:nogroup" steht und im FRITZ!OS auch nur existiert, wenn man den freetz-mod verwendet.
 
In der "hiawatha.conf" ist "ServerId = www-data:www-data" eingetragen.

Hier meine "passwd", "group" und "shadow":
Code:
#cat /tmp/passwd
root:x:0:0:root:/tmp/root:/bin/sh
boxusr10:$1$xunwtpv$Q7kl5XWtQ8Z06EiXsbNfn.:1010:0:box user:/home-not-used:/bin/sh
boxusr10int:$1$wwxoqlw$C3UbwjAjl7MuhsxRH4bbX.:2010:0:box user:/home-not-used:/bin/sh
boxusr11:$1$kpozskn$RA7h4C2YlveOaUoQwnFdI.:1011:0:box user:/home-not-used:/bin/sh
boxusr11int:$1$qnsxpis$o7wcoGbl/ZpfDBzZfytQm.:2011:0:box user:/home-not-used:/bin/sh
boxusr100:$1$opnysvv$RQR56F4qPUUjNUTqJWYNS0:1100:0:box user:/home-not-used:/bin/sh
boxusr100int:$1$kwmwzsf$g/r2Ka9y0hRXu5WWkJyoY1:2100:0:box user:/home-not-used:/bin/sh
www-data:x:100:100:www-data:/home-not-used:/bin/false


#cat /tmp/group
root:x:0:root
www-data:x:100:www-data


#cat /tmp/shadow
root:PASSWORT:0:0:99999:7:::
www-data:!:0:0:99999:7:::

Fällt dir ein Fehler auf?

Code:
#httpd -v -p 111 -u www-data:www-data -h /tmp
httpd: can't open '/': Permission denied
 
Fällt dir ein Fehler auf?
Ja, schon ... der httpd sollte zumindest lesend das Wurzelverzeichnis öffnen dürfen. :mrgreen:

Ansonsten kann ich auch nur den Vorschlag wiederholen, das einfach mal mit den Kommandos der BusyBox einzurichten ... vielleicht stimmen Leserechte auf die /etc/passwd (oder die verlinkte Datei) nicht, wenn da auf "www-data" umgeschaltet wurde oder was auch immer.

Du wirst wohl nicht umhinkommen, das Problem schrittweise einzugrenzen.

Vielleicht mag irgendein Parser in einer Library auch den Bindestrich nicht (obwohl das kein Problem sein sollte) ... entweder Du rollst das Schritt für Schritt auf oder Du mußt eben doch zu Freetz greifen, wo das alles für Dich eingerichtet wird.

Sei kreativ beim Eingrenzen der Ursachen - z.B. könntest Du ja mal testweise /bin/sh als Shell für den Benutzer setzen, nur um zu sehen, ob es ein Login-Problem ist oder nicht.

Es ist offenkundig ein Rechteproblem für den von Dir eingerichteten Benutzer ... und die Ursache muß irgendwo in Deinem System zu finden sein, denn bei mir klappt folgendes:

Code:
root@FB7490:/var/media/ftp $ [COLOR="#0000FF"]addgroup www[/COLOR]
root@FB7490:/var/media/ftp $ [COLOR="#0000FF"]adduser -h /var/media/ftp -s /bin/sh -G www -D wwwrun[/COLOR]
root@FB7490:/var/media/ftp $ [COLOR="#0000FF"]httpd -v -p 111 -u wwwrun:www -h /var/media/ftp[/COLOR]
root@FB7490:/var/media/ftp $ [COLOR="#0000FF"]ps w | grep httpd[/COLOR]
10808 wwwrun    1332 S    {exe} httpd -v -p 111 -u wwwrun:www -h /var/media/ftp
10810 root      1332 S    {exe} grep httpd
root@FB7490:/var/media/ftp $ [COLOR="#0000FF"]grep www /etc/group /etc/passwd /etc/shadow[/COLOR]
/etc/group:www:x:1000:wwwrun
/etc/passwd:wwwrun:x:1000:1000:Linux User,,,:/var/media/ftp:/bin/sh
/etc/shadow:wwwrun:!:17118:0:99999:7:::

Also muß der Fehler (zumindest beim Start des httpd) irgendwo in Deinem Vorgehen liegen - einfach gegen "funktionierende" Kommandofolgen testen und vergleichen.
 
Auch mit deiner Befehlsfolge bricht "httpd" mit derselben Fehlermeldung ab. Ich weiß also nicht, wo da bei mir der Fehler zu suchen ist...

Code:
# ls -la /
drwxr-x---   16 root     root           277 Feb 25  2016 .
drwxr-x---   16 root     root           277 Feb 25  2016 ..
drwxr-x---    2 root     root          2278 Feb 25  2016 bin
drwxr-x---    2 root     root            26 Feb 25  2016 data
drwx------   10 root     root             0 Jan  1  1970 debug
drwxr-xr-x   10 root     root         14100 Nov 13 07:00 dev
drwxr-x---   12 root     root          1327 Nov  8 18:38 etc
drwxr-x---    3 root     root            29 Feb 25  2016 filesystem
drwxr-x---    4 root     root          9824 Nov  8 18:38 lib
lrwxrwxrwx    1 root     root             3 Nov  8 18:35 lib32 -> lib
drwxr-x---    2 root     root             3 Feb 25  2016 mnt
lrwxrwxrwx    1 root     root            19 Nov  8 18:35 nohup.out -> ./var/tmp/nohup.out
dr-xr-xr-x  119 root     root             0 Jan  1  1970 proc
drwxr-x---    2 root     root          1699 Feb 25  2016 sbin
dr-xr-xr-x   11 root     root             0 Jan  1  1970 sys
lrwxrwxrwx    1 root     root             9 Nov  8 18:35 tmp -> ./var/tmp
drwxr-x---   10 root     root           166 Feb 25  2016 usr
drwxr-x---   14 root     root          1980 Nov 13 17:41 var
-rw-r-----    1 root     root         30720 Feb 25  2016 var.tar
drwxr-xr-x    1 root     root          2048 Nov  8 18:44 wrapper

Erkennst du vielleicht Unterschiede in den Berechtigungen im Vergleich zu deinem Wurzelverzeichnis?
 
Code:
# ls -la / 
[COLOR=#ff0000]drwxr-x---   16 root     root           277 Feb 25  2016 .[/COLOR]
Erkennst du vielleicht Unterschiede in den Berechtigungen im Vergleich zu deinem Wurzelverzeichnis?

Bitte gib mal "chmod 755 / /var /var/tmp" ein und teste erneut.

Bei mir sieht es so aus:
Code:
# ls -la /
drwxr-xr-x   16 root     root           289 Nov 10 10:16 .
drwxr-xr-x   16 root     root           289 Nov 10 10:16 ..
drwxr-xr-x    2 root     root          2546 Nov 10 10:16 bin
drwxr-xr-x    2 root     root            26 Nov 10 10:16 data
drwx------   10 root     root             0 Jan  1  1970 debug
drwxr-xr-x   10 root     root         14100 Nov 11 20:36 dev
drwxr-xr-x   13 root     root          1381 Nov 11 20:09 etc
drwxr-xr-x    3 root     root            29 Nov 10 10:16 filesystem
drwxr-xr-x    5 root     root         10177 Nov 10 10:16 lib
lrwxrwxrwx    1 root     root             3 Nov 11 20:05 lib32 -> lib
drwxr-xr-x    2 root     root             3 Nov 10 10:16 mnt
lrwxrwxrwx    1 root     root            19 Nov 11 20:05 nohup.out -> ./var/tmp/nohup.out
dr-xr-xr-x  107 root     root             0 Jan  1  1970 proc
drwxr-xr-x    2 root     root          1708 Nov 10 10:16 sbin
dr-xr-xr-x   11 root     root             0 Jan  1  1970 sys
lrwxrwxrwx    1 root     root             8 Nov 11 20:05 tmp -> /var/tmp
drwxr-xr-x   10 root     root           166 Nov 10 10:16 usr
drwxr-xr-x   15 root     root          1980 Nov 13 18:11 var
-rw-r--r--    1 root     root         30720 Nov 10 10:16 var.tar
drwxr-xr-x    1 root     root          2048 Nov 11 20:14 wrapper
#
 
Zuletzt bearbeitet:
@Hiiri:
Ist das ernst gemeint?

Da hat ja offenbar jemand die rx-Rechte für "others" von den wichtigsten Verzeichnissen entfernt ... das wird kaum "modfs" selbst gewesen sein, da gibt es keine "chmod"-Kommandos für den entpackten Inhalt.

Wenn das doch der Fall wäre, ist es ein Fehler - dann würde ich den auch suchen. Aber hier würde ich eher vermuten, daß Dir nicht so richtig klar ist, wofür "x"-Rechte auf einem Verzeichnis benötigt werden ... ohne diese gibt es auch keinen Zugriff auf Unterverzeichnisse. Und das "chmod" zum Entzug dieser Rechte (denn beim Auspacken werden die wiederhergestellt) kann eigentlich nur von Dir gekommen sein. Ich verstehe auch noch die Idee dahinter, wenn man das für Dateien in den Systemverzeichnissen macht - das sieht hier aber nach einem schönen Negativbeispiel für die Verwendung von "chmod -R" ohne vorheriges Nachdenken aus (nicht so ganz weit von "read mail, really fast" entfernt).

Wenn Dein Root-Verzeichnis nur "750" eingestellt hat und dem Benutzer "root" und der Gruppe "root" gehört, wie soll dann ein Benutzer, der weder "root" heißt noch Mitglied der Gruppe "root" ist, jemals irgendeine Datei auf diesem System öffnen können?

Da hast Du vermutlich etwas komplett falsch verstanden ... wenn Du das korrigieren möchtest, mache Dich mit "find" und dessen "type"- und "exec"-Parametern vertraut, damit beim nächsten Mal kein "chmod -R" verwendet wird an einer Stelle, wo es nicht funktioniert. Wenn Du wirklich eine effektive Abschottung des Servers gegen den Rest willst, nimm lieber "chroot" - da kannst Du dann das Dateisystem so zusammenbauen, wie Du möchtest und den Server in ein "jail" sperren.

- - - Aktualisiert - - -

@Pokemon20021:
Das sollte für das Wurzelverzeichnis nicht funktionieren ... das gesamte FS ist read-only und dazu gehört auch das Setzen von Attributen.
 
Zuletzt bearbeitet:
Direkt nach dem Entpacken mit "modfs":
Code:
squashfs-root# ls -la
drwxr-x---   16 root     root          4096 Feb 25  2016 .
drwxr-xr-x    3 root     root          4096 Nov 13 19:25 ..
drwxr-x---    2 root     root          4096 Feb 25  2016 bin
drwxr-x---    2 root     root          4096 Feb 25  2016 data
drwxr-x---    2 root     root          4096 Feb 25  2016 debug
drwxr-x---    3 root     root          4096 Feb 25  2016 dev
drwxr-x---   12 root     root          4096 Feb 25  2016 etc
drwxr-x---    3 root     root          4096 Feb 25  2016 filesystem
drwxr-x---    4 root     root         20480 Feb 25  2016 lib
lrwxrwxrwx    1 root     root             3 Nov 13 19:26 lib32 -> lib
drwxr-x---    2 root     root          4096 Feb 25  2016 mnt
lrwxrwxrwx    1 root     root            19 Nov 13 19:26 nohup.out -> ./var/tmp/nohup.out
drwxr-x---    2 root     root          4096 Feb 25  2016 proc
drwxr-x---    2 root     root          4096 Feb 25  2016 sbin
drwxr-x---    2 root     root          4096 Feb 25  2016 sys
lrwxrwxrwx    1 root     root             9 Nov 13 19:26 tmp -> ./var/tmp
drwxr-x---   10 root     root          4096 Feb 25  2016 usr
drwxr-x---    2 root     root          4096 Feb 25  2016 var
-rw-r-----    1 root     root         30720 Feb 25  2016 var.tar
drwxr-x---    2 root     root          4096 Feb 25  2016 wrapper

Deiner Hilfsbereitschaft in allen Ehren, aber bleibe bitte bei den Fakten.
Auf deinen Kommentar gehe ich jetzt nicht weiter ein, da es nicht zur Lösung beitragen würde.
 
Ruhig Brauner ... wenn Du Fakten lieferst (unaufgefordert und im notwendigen Umfang), bleibe ich auch dabei - ansonsten bin ich auf Annahmen angewiesen (ich sehe hier nirgendwo eine Beschreibung, was Du mit "modfs" und danach noch von Hand gemacht hast) und muß auf der Basis dessen, was sichtbar ist, nach Wahrscheinlichkeiten entscheiden. Paßt Dir das nicht und Du fühlst Dich zu unrecht "angegriffen" (wenn Dich irgendwelche Kommentare stören, muß ich das annehmen), dann wirke dem aktiv entgegen und schildere so etwas künftig von vorneherein, dann muß ich nicht "spekulieren".

Was muß man denn unter "Direkt nach dem Entpacken mit "modfs":" genau verstehen?

Auch hier dann bitte mehr Protokolle und Fakten(!) anstelle von Prosa - das geht dabei los, welche Firmware Du da gerade hast entpacken lassen (war das immer noch die aus #1 oder die neue Labor-Version), woher die kommt und wie Du Dir erklären würdest, warum entweder das "unsquashfs" die Dateiattribute nur sehr selektiv wiederherstellt oder warum das Quell-Image keine Rechte auf Verzeichnissen für "others" enthält - das ist tatsächlich so bei der 06.50 und auch bei der neuen Labor-Version, aber das ist eben auch nicht meine Schuld. Wenn Du selbst etwas auskunftsfreudiger wärst (vielleicht liest Du meinen ersten Satz in #3 noch einmal), müßte man weniger raten und dann eben auch mal danebenliegen. Wenn das ansonsten ein Quiz oder ein "Frag mich, wenn Du etwas wissen willst" werden soll, bin ich tatsächlich der Falsche, weil mir solche häppchenweisen Diskussionen tatsächlich zuwider sind - sie kosten nämlich auch spätere Leser nur unnötige Zeit, wenn die sich die Infos dann bröckchenweise aus x verteilten Beiträgen zusammensuchen müssen.

Wenn Du Dich zu unrecht kritisiert fühlst von der - auf Basis der wahrscheinlichsten Vermutung getroffenen - "Feststellung":
PeterPawn schrieb:
Und das "chmod" zum Entzug dieser Rechte (denn beim Auspacken werden die wiederhergestellt) kann eigentlich nur von Dir gekommen sein.
, nehme ich das zur Kenntnis (auch wenn das kein Kuschelzoo ist) - bei vollständiger Auflistung Deiner ausgeführten Arbeitsschritte mit "modfs" wäre ich gar nicht erst auf diese Idee gekommen (und daß Du Änderungen ausgeführt hast, darf man annehmen, wenn Du irgendwelche Nutzer durch Editieren von Dateien anlegen willst, das gibt es in "modfs" auch nicht) und an meiner Feststellung, daß Du dann offenbar gar nicht weißt, worum es bei Linux-Dateirechten geht, ändert das ebenfalls nichts - denn dann sieht man das in Deinem Listing in #8 auf den ersten Blick (da muß man gar nichts vergleichen, wenn man weiß, wie das funktioniert) und die Frage danach ist eigentlich überflüssig.


-Jedenfalls ist es tatsächlich so, daß AVM aus irgendwelchen merkwürdigen Gründen (das kann fast nur ein Versehen sein, aber da habe ich keine Fakten und müßte wieder spekulieren) bei den Verzeichnissen an einigen Stellen die Rechte für "others" so setzt, daß wenigstens die Mitgliedschaft in der Gruppe "root" erforderlich ist, damit man überhaupt irgendeine Datei öffnen kann.

Da bei AVM alle Benutzer Mitglied dieser Gruppe sind, wirkt sich das dort nicht aus - aber wenn man mit einem eigenen Benutzer und eigener Gruppe zugreifen will, kommt der eben nicht einmal dazu, irgendeine Datei dort zu finden. Das gilt wie gesagt mindestens für die 06.50 und die aktuelle Laborversion.

Was mich verwundert ... wenn das nicht im Freetz beim Umkopieren nach "modified" oder danach irgendwie korrigiert wird, dürften bei der 7362SL ab 06.50 mit einem Freetz-Image ja auch keine Dienste mehr funktionieren, wenn dafür ein Benutzer mit GID != 0 verwendet wird - also wird das dort vermutlich geändert, sonst wäre es wohl schon aufgefallen in den letzten 6 Monaten oder keiner verwendet eine solche Konfiguration (mit eingeschränkten Benutzern, ein paar Freetz-Installationen auf 7362SL wird es wohl geben).


-Wenn Deine erste Fehlersuche sich dem "/dev/random" widmet (obwohl Hiawatha ja /dev/urandom verwendet, egal was dort auch im Forum steht) und Du dann bei der Kontrolle, ob Dein verwendeter Benutzer auf das Gerät auch zugreifen darf, das nur nach dem Augenschein und nicht systematisch machst (dazu gehören dann eben auch die Rechte auf /dev und /), dann liegt nun mal die Vermutung auch nahe, daß Du da etwas in der "Beschreibung" ausgelassen haben könntest.

Das hast Du ja auch ganz offensichtlich - aber es hat auf dieses Problem tatsächlich keinen Einfluß. Denn die Rechte fehlen bereits im AVM-Image und meine Aussage, daß es in "modfs" kein "chmod" gibt, was das anrichten könnte, stimmt ebenfalls (ist auch ein Fakt, bei dem ich bleibe) und das weiß ich nun mal ganz genau.

Hier hat es zwar AVM "verbockt" ... aber u.a. für die Kontrolle(!) durch den "modfs"-User gibt es in "modfs" die Pause vor dem Einpacken und wenn bei dieser Kontrolle das Problem nicht auffällt, dann kann ich da auch nichts für. Ich zitiere einfach mal aus der README.ger.outdated:
Code:
Nachdem dann auch im zweiten Durchgang die verbliebenen Skripte
alle abgearbeitet oder abgelehnt wurden, wird noch einmal der Pfad
zum 'Wurzelverzeichnis' des neuen Dateisystems angezeigt und man
hat nun die Gelegenheit, dort [COLOR="#FF0000"]die Dateien noch einmal manuell zu
prüfen[/COLOR], bevor der - durchaus hohe zeitliche Aufwand - des Packens
am Ende umsonst investiert wird.
Das Skript wartet an dieser Stelle ganz simpel auf das Drücken
der Eingabetaste für den Beginn des Packprozesses, es akzeptiert
aber auch die Eingabe eines einzelnen 'q' als Anweisung für den
Abbruch der weiteren Verarbeitung.
Wenn man einen eigenen Benutzer mit einem Paket verwenden will, obwohl AVM bekanntermaßen alles mit Root-Rechten macht, sollte man auch kontrollieren (können), ob das alles richtig ist, was da von Haus aus steht und was man hinzufügt.

Aber egal ... wenn Du wieder aus der Schmollecke heraus bist oder ich Dich auch nur mißverstanden habe, was wiederum Deine Bitte um "Fakten" betraf - am Ende mußt Du ja nun irgendetwas tun, damit die Rechte so sind, wie sie gebraucht werden oder auf den eingeschränkten Benutzer verzichten.

Neben der Möglichkeit der Korrektur in der Pause vor dem Packen (ich hatte vermutlich "find" und seine Optionen schon einmal erwähnt) gäbe es weiterhin die Möglichkeit, Hiawatha in einem "chroot jail" zu starten. Welche Variante Du nun auch wählen magst - das eigentliche Problem ist lokalisiert und damit sollte das hier erledigt sein.
 
Zuletzt bearbeitet:
@PeterPawn: Woher hast du wieder deine tolle Spekulation, dass ich braun bin? Anscheinend bist du hier derjenige, der sich angegriffen fühlt...

@Pokemon20021: Danke für deine Auflistung. Damit konnte ich die Berechtigungen einstellen :)
 
Wenn Du nicht einmal die "Redewendung" "Ruhig Brauner" kennst, dann hilft Dir vielleicht das Internet: https://www.google.de/search?q=ruhig+brauner

Ansonsten stehe ich zu dem, was ich geschrieben habe ... und bei allen Meinungsverschiedenheiten, die man so haben kann: Wenn Du einfach mit einem :blonk: darüber hinweggegangen wärst, daß Dir das mit den Rechten für die Wurzel nicht selbst sofort aufgefallen ist (Deinen vorhergehenden Fehler mit /dev/random mal außen vor, auch da hast Du Dich nur auf andere verlassen und es selbst ja wohl gar nicht erst geprüft) und dann einfach mit einem "unsquashfs -s filesystem_core.squashfs" gezeigt hättest, daß es bereits bei AVM so ist, dann wäre vielleicht
Hiiri schrieb:
Deiner Hilfsbereitschaft in allen Ehren, aber bleibe bitte bei den Fakten.
Auf deinen Kommentar gehe ich jetzt nicht weiter ein, da es nicht zur Lösung beitragen würde.
bei mir nicht so komisch angekommen - und ja, entschuldige bitte, daß ich mich in Dein Problem vertieft habe und dabei zu Spekulationen gezwungen war und Dir mit einer solchen schlußendlich Unrecht tat - es tut mir ausdrücklich leid, daß ich mit meiner Vermutung daneben lag und ich entschuldige mich dafür.

Welchen "Kommentar" Du nun genau meintest (sofern es nicht der bereits von mir weiter oben zitierte Satz zum "chmod" war), weiß ich allerdings immer noch nicht - meine Bemerkung zu Deinen fehlenden Kenntnissen zu "chmod" und Attributen war ja kein Kommentar, sondern eine Feststellung (sofern Du das nicht übersehen hast - glaube ich eigentlich nicht und selbst wenn, dann kann ich aber auch wieder nichts dafür, welchen Eindruck Du hinterläßt, wenn Du da noch (zweimal) fragst, ob jemandem etwas auffällt).

Wenn Du auf die Ausgabe von
Code:
#httpd -v -p 111 -u www-data:www-data -h /tmp
httpd: [COLOR="#FF0000"]can't open '/': Permission denied[/COLOR]
hin nicht auf die Idee kommst, die Berechtigungen für das Wurzelverzeichnis und Deinen Benutzer einfach mal selbst zu überprüfen und es erst nach 8 Stunden eines weiteren "roundtrips" (und wieder eines längeren Beitrags von mir, wobei ich mich am Ende der Diskussion des Eindrucks ohnehin nicht erwehren kann, daß ich auch an inhaltlichen Informationen in diesem Thread fast mehr geschrieben habe als Du (CODE-Schnipsel zählen da wohl kaum dazu), was dann wohl daran lag, daß ich ja auch derjenige mit dem zu lösenden Problem war) bedarf, damit Du dort mal nachsiehst (womit wir wieder bei dem Warten und Verlassen auf andere sind), dann finde ich das per se schon ziemlich schwach. Wenn mich jemand ausdrücklich nach Befehlen zum Test fragt, dann erwarte ich auch, daß er testet ... und zwar nicht nur das, was ich ihm mehr oder weniger direkt hingeschrieben habe, sondern auch die anderen Punkte, die ich als Alternativen genannt habe. Ziel war es ja nicht, daß ich erkennen kann, was bei Dir schief läuft und da ist dann das Aufschreiben irgendwelcher Ergebnisse und das anschließende Warten auf Antwort wohl doch ein Mißverständnis. Hättest Du gefragt: "Mit welchem Befehl teste ich am besten, ob der Benutzer an das Device kommt und wer interpretiert mir hinterher die Ergebnisse?", wäre ich gleich weiterhin "stumm" geblieben.

Aber ich habe tatsächlich auch etwas hierbei gelernt, sowohl inhaltlich (die 7362SL hat andere Rechte im Dateisystem) als auch in Bezug auf künftige Beiträge (spare Dir weitere Reaktionen, wenn Dein erster Hinweis auf fehlende Informationen nicht die erwarteten Früchte trägt ... wenn es nach einer Aufforderung nicht funktioniert, wird es im Verlauf kaum besser werden).


-Und um auch das noch einmal anzusprechen ... wenn Du tatsächlich nur die Rechte für die Verzeichnisse korrigiert hast (#13, dann auch hoffentlich nicht nur für die Ebenen, die Du im Listing von @Pokemon20021 sehen kannst), dann kannst Du Dir das ganze Hinzufügen der neuen Gruppe eigentlich auch fast sparen.

Solange nämlich die ganzen Dateien in den Unterverzeichnissen auch für "others" alle dieselben Rechte wie für die Gruppe einräumen (die Ausnahmen lassen sich an den Fingern abzählen) , ändert sich durch den Wechsel der Gruppe (beim Benutzer macht das Sinn, weil UID=0 ein Sonderstatus ist) wenig bis gar nichts.

Das Beschreiben von Dateien im SquashFS ist ohnehin nicht möglich, "/wrapper" ist im Normalfall ebenfalls read-only gemountet und in "/var" (dem einzigen beschreibbaren Verzeichnis) sieht es erst einmal auch nicht viel anders aus:
Code:
# tar tvf squashfs-root/var.tar
drwxr-xr-x 0/0               0 2016-10-19 11:59 ./var/
drwxr-xr-x 0/0               0 2016-10-19 11:59 ./var/tmp/
-rwxrwxrwx 0/0              26 2016-10-19 11:58 ./var/tmp/passwd
-rwxrwxrwx 0/0              20 2016-10-19 11:58 ./var/tmp/hosts
-rwxrwxrwx 0/0              50 2016-10-19 11:58 ./var/tmp/resolv.conf
-rw-r--r-- 0/0               0 2016-10-19 11:59 ./var/tmp/nohup.out
-rwxrwxrwx 0/0              10 2016-10-19 11:58 ./var/tmp/group
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/tmp/upnpwebsrv/
-rwxrwxrwx 0/0              26 2016-10-19 11:58 ./var/tmp/shadow
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/wpa2/
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/tam/
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/lock/
-rwxrwxrwx 0/0               0 2016-10-19 11:58 ./var/lock/.dummy
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/dsl/
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/dsl/diagnose/
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/dsl/pipe/
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/htmltext.db -> /etc/htmltext_de.db
-rwxrwxrwx 0/0            9222 2016-10-19 11:58 ./var/post_install
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/rpc/
-r-xr-xr-x 0/0               0 2016-10-19 11:58 ./var/rpc/.dummy
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/log/
-rwxrwxrwx 0/0               0 2016-10-19 11:58 ./var/log/.dummy
drwxr-xr-x 0/0               0 2016-10-19 11:59 ./var/run/
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/run/topology.conf -> /tmp/topology.conf
-rwxrwxrwx 0/0               0 2016-10-19 11:58 ./var/run/.dummy
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/run/cpufreq.kick -> /sys/devices/system/cpu/cpufreq/kick
drwxr-xr-x 0/0               0 2016-10-19 11:58 ./var/dev/
drwxr-xr-x 0/0               0 2016-10-19 11:59 ./var/media/
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/media/devmap -> /var/tmp/mediadevmap
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/web_activity -> run/cpufreq.kick
lrwxrwxrwx 0/0               0 2016-10-19 11:59 ./var/devices -> /var/tmp/usbdevices
(das ist die Laborversion für die 7362SL).

Damit ändert sich durch die Verwendung einer anderen Gruppe (deren Wechsel ist ja das eigentliche Problem) an den Schreibrechten also schon mal gar nichts und das gilt ebenfalls für die "execute"-Rechte, weil die eben (fast) überall für "others" auch dieselben sind wie für die Gruppe.

Somit stellt sich dann die Frage, warum Du überhaupt eine andere Gruppe als "root" verwenden willst und das ist dann auch schon die Wurzel Deines Problems ... es ist ja am Ende die Gruppe, der es final an den Rechten fehlt und nicht der Benutzer, andere Benutzer (s. /etc/passwd) sind halt Member von "GID=0".

Den Sicherheitsgewinn daraus kann ich nicht direkt erkennen (ich lasse mich gerne aufklären - anders als UID=0 ist GID=0 nicht unbedingt ein privilegierter Status, aber ich könnte mich auch irren, falls irgendein Programm (außer welche mit "setgid"-Erfordernis für korrekte Funktion) auch die effektive Gruppe testet) und am Ende - ich weiß ja nicht, wo Du Deinen PHP-Kram und den Hiawatha ablegst - ändert sich das vielleicht für alles, was unter "/var/media/ftp/<usb_device>" gemountet wird, ohnehin wieder mit der nächsten Version, wenn nur noch mit "noexec" gearbeitet wird (oder man muß es rückgängig machen, obwohl es eine sinnvolle Sicherheitseinrichtung ist).

Somit noch einmal der Hinweis (wenn es Dich nicht interessiert, hilft es vielleicht anderen):
Wer einen Service mit einem Nutzer mit eingeschränkten Rechten auf seiner FRITZ!Box betreiben will (generell eine gute Idee), kann das auch gleich richtig machen und den mit "chroot" arbeiten lassen. Nur das (oder das Anpassen der Dateiberechtigungen zur Ausführung - vielleicht sogar zum Lesen - im gesamten SquashFS-Image) führt am Ende dazu, daß ein Fehler im Service, der zum Ausbruch eines Angreifers genutzt werden kann, auf der Box keine weiteren Kommandos finden oder gar starten kann.

Andere Sicherheitserweiterungen (SELinux, Apparmor) unterstützt das FRITZ!OS nicht und damit kann man auch keine feiner granulierten Rechte als die für "others" (wenn der verwendete Benutzer nicht Besitzer oder Gruppe ist) vergeben.

In ein chroot-Jail kopiert man halt nur die Kommandos hinein, die verfügbar sein sollen (Vorsicht, hier ist eine BusyBox mit "PREFER_APPLETS" dann schon wieder ein Stolperstein), legt ein Arbeitsverzeichnis an und mountet lib mit einem "bind"-Mount. Dann noch ein eigenes "dev"-Verzeichnis anlegen, nur die notwendigen Devices erstellen und die Schreibrechte für das neue dev-Verzeichnis einschränken, denn es bringt nichts, wenn da wieder jeder neue Devices anlegen kann. Dann noch die notwendigen Pseudo-Dateisysteme gemountet (das geht bei Pseudos ohne bind) und man hat seine Umgebung beisammen. Ein Beispiel für "chroot" (da allerdings dazu benutzt, um dem aufgerufenen Programm eine "virtuelle Datei" unterjubeln zu können) findet sich in "decode_passwords". Das dort enthaltene "prepare_chroot" muß man vielleicht etwas für die eigenen Bedürfnisse anpassen (speziell wenn man device-Files erzeugen will), aber dann kann man durch einfache Definitionen von Dateioperationen (in chroot_files) alles notwendige an Dateien für seinen Service zusammenstellen und in der Folge kann selbst ein gekaperter Service nicht weiter als bis zu diesem "verschobenen" Root-Directory kommen. Allerdings setzt das natürlich voraus, daß der dort "eingesperrte" Daemon nicht mit anderen Diensten außerhalb kommunizieren will, sonst müßte man das über Pipes oder (Net-)Sockets lösen.


-Und bevor jetzt jemand anderem auffällt, daß die von mir weiter oben aufgestellte Behauptung, bei AVM würde alles mit der Gruppe "root" laufen, auch nicht (mehr) so ganz den Tatsachen entspricht (das ist auch ein Fakt): Für den RPC-Mechanismus und die NFS-Verbindung zwischen den Systemen auf einer 6490, war dann wohl auch AVM die Gruppe "root" zu heiß (kann auch sein, daß der rpcbind auf "nobody" besteht, habe ich nicht nachgesehen) - da werden "nobody" und "nogroup" sauber angelegt und dann auch verwendet (in S51-nfs).
 
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.