Erstellt vor 7 Jahren

Geschlossen vor 5 Jahren

Zuletzt geändert vor 3 Jahren

#1152 closed addition (fixed)

shellinabox PACKAGE

Erstellt von: sf3978 (Ticket), Paket (Anhang) ist von Max Muster Verantwortlicher: cuma
Priorität: low Meilenstein: freetz-2.0
Komponente: packages Version: devel
Stichworte: shellinabox Beobachter:
Product Id: Firmware Version:

Beschreibung

Da das IPPF-Forum z. Zt. nicht erreichbar ist, hänge ich das Paket (Patch) für shellinabox hier rein. Das Paket (Patch) shellinabox ist von Max Muster erstellt worden.

Anhänge (9)

shellinabox.patch (353.7 KB) - hinzugefügt von sf3978 vor 7 Jahren.
shellinabox_w_svn.patch (12.4 KB) - hinzugefügt von MaxMuster vor 7 Jahren.
Shellinabox mit svn-download
130_aclocal_m4.patch (283.9 KB) - hinzugefügt von sf3978 vor 7 Jahren.
proper_shellinabox_291210.patch (10.4 KB) - hinzugefügt von sf3978 vor 7 Jahren.
shellinabox-er.patch (8.3 KB) - hinzugefügt von er13 vor 7 Jahren.
shellinabox-2.14.patch (18.0 KB) - hinzugefügt von MaxMuster vor 5 Jahren.
shellinabox-2.14_2ndtry.patch (16.9 KB) - hinzugefügt von MaxMuster vor 5 Jahren.
Neuer Versuch für GUI und rc-file
Shellinabox.png (98.8 KB) - hinzugefügt von MaxMuster vor 5 Jahren.
Mal ein Screenshot
shellinabox_daemon.patch (754 Byte) - hinzugefügt von oliver vor 5 Jahren.

Alle Anhänge herunterladen als: .zip

Änderungshistorie (65)

Geändert vor 7 Jahren durch sf3978

comment:1 Geändert vor 7 Jahren durch er13

In r6221 habe ich freetz_download erweitert, sodass dieses den Quellcode auch direkt aus subversion bzw. git repositories auschecken kann. Könntet Ihr bitte dieses Feature nutzen und den 100_bring_to_trunk_r239.patch rausschmeißen - die 8000 Zeilen haben nichts in freetz-repository verloren (sollten wir uns dafür entscheiden, es aufzunehmen). Sollten die Entwickler von shellinabox bazaar bzw. mercurial verwenden, so kann ich freetz_download entsprechend erweitern, müsst nur sagen. Danke!

Edit: die Entwickler von shellinabox verwenden subversion

Zuletzt geändert vor 7 Jahren von er13 (vorher) (Diff)

comment:2 Geändert vor 7 Jahren durch sf3978

Kann es sein, dass "$(PKG)_SITE:=svn@" mit "http://shellinabox.googlecode.com/svn/trunk/ shellinabox-read-only" nicht funktioniert, weil das "svn" im Link fehlt bzw. nicht vorhanden ist? Z. B. könnte es so "http://svn.shellinabox.googlecode.com/svn/trunk/ shellinabox-read-only" funktionieren?

comment:3 Geändert vor 7 Jahren durch MaxMuster

Das muss so aussehen:

$(call PKG_INIT_BIN, 239)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SITE:=svn@http://shellinabox.googlecode.com/svn/trunk
$(PKG)_BINARY:=$($(PKG)_DIR)/$(pkg)d
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/$(pkg)d
$(PKG)_SOURCE_MD5:=a7deea5236e4d7d96e3daa709d7fbca4

Dann noch den Patch dazu raus und es sollte gehen…

@er13: Warum wird denn bei svn erst auf den Mirrors gesucht? Ist das Absicht?

joerg@joerg-ubuntu:~/freetz-branch-7390$ make shellinabox-precompiled
mkdir -p packages/target-mips_uClibc-0.9.29/shellinabox-239/root
if test -d make/shellinabox/files; then tar -c -C make/shellinabox/files --exclude=.svn . | tar -x -C packages/target-mips_uClibc-0.9.29/shellinabox-239 ; fi
if [ ! -e source/.echo_item_start ]; then 	echo -n "---> "; case "BIN" in BIN)	echo -n "package/shellinabox: " ;; LIB)	echo -n "library/shellinabox: " ;; TOOL)	echo -n "tool/shellinabox: " ;; *)	echo -n "kernel: " ;; esac; rm -f source/.echo_item_build; touch source/.echo_item_start; fi; echo -n "downloading... ";
---> package/shellinabox: downloading... 
--2010-12-28 13:39:54--  http://freetz.wirsind.info/shellinabox-239.tar.gz
Auflösen des Hostnamen »freetz.wirsind.info«.... 85.214.159.80
Verbindungsaufbau zu freetz.wirsind.info|85.214.159.80|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 404 Not Found
2010-12-28 13:39:55 FEHLER 404: Not Found.

Download failed - http://freetz.wirsind.info/shellinabox-239.tar.gz  ->  error code 8

--2010-12-28 13:39:55--  http://freetz.magenbrot.net/shellinabox-239.tar.gz
Auflösen des Hostnamen »freetz.magenbrot.net«.... 212.34.184.253
Verbindungsaufbau zu freetz.magenbrot.net|212.34.184.253|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 404 Not Found
2010-12-28 13:39:55 FEHLER 404: Not Found.

Download failed - http://freetz.magenbrot.net/shellinabox-239.tar.gz  ->  error code 8

--2010-12-28 13:39:55--  http://freetz.3dfxatwork.de/shellinabox-239.tar.gz
Auflösen des Hostnamen »freetz.3dfxatwork.de«.... 85.214.81.232
Verbindungsaufbau zu freetz.3dfxatwork.de|85.214.81.232|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 404 Not Found
2010-12-28 13:39:56 FEHLER 404: Not Found.

Download failed - http://freetz.3dfxatwork.de/shellinabox-239.tar.gz  ->  error code 8

Checking out files from the svn repository...
svn: Schreibfehler: Datenübergabe unterbrochen (broken pipe)
A    shellinabox-239
A    shellinabox-239/configure
A    shellinabox-239/Makefile.in
[...]

Geändert vor 7 Jahren durch MaxMuster

Shellinabox mit svn-download

comment:4 Geändert vor 7 Jahren durch sf3978

Dann noch den Patch dazu raus und es sollte gehen…

Bei mir (trunk rev 6367) hat das mit dem Patch (d. h. mit shellinabox-239) einen kleinen Schönheitsfehler. Und zwar, wird die Datei "aclocal.m4" nicht vollständig erstellt:

                CFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-lm"
building... make[1]: Entering directory `/home/gm/myfreetz/freetz6367/freetz-trunk/source/target-mipsel_uClibc-0.9.29/shellinabox-239'
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/gm/myfreetz/freetz6367/freetz-trunk/source/target-mipsel_uClibc-0.9.29/shellinabox-239/missing --run aclocal-1.11 
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/gm/myfreetz/freetz6367/freetz-trunk/source/target-mipsel_uClibc-0.9.29/shellinabox-239/missing --run autoconf
 cd . && /bin/sh /home/gm/myfreetz/freetz6367/freetz-trunk/source/target-mipsel_uClibc-0.9.29/shellinabox-239/missing --run automake-1.11 --gnu
configure.ac:17: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
make[1]: *** [configure] Fehler 1
make[1]: *** Warte auf noch nicht beendete Prozesse...
Makefile.am:5: Libtool library used but `LIBTOOL' is undefined
Makefile.am:5:   The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
Makefile.am:5:   to `configure.ac' and run `aclocal' and `autoconf' again.
Makefile.am:5:   If `AC_PROG_LIBTOOL' is in `configure.ac', make sure
Makefile.am:5:   its definition is in aclocal's search path.
make[1]: *** [Makefile.in] Fehler 1
make[1]: Leaving directory `/home/gm/myfreetz/freetz6367/freetz-trunk/source/target-mipsel_uClibc-0.9.29/shellinabox-239'

Wenn ich jetzt versuche diese Datei zu patchen, dann ist die Original-Datei (d. h. die "unvollständige" aclocal.m4-Datei, die ich für die Erstellung des Patches verwendet habe) anders als die zu patchende "unvollständige" aclocal.m4-Datei. D. h. der Patchvorgang hat Auswirkungen auf die Art der Unvollständigkeit bzw. der Größe der aclocal.m4-Datei. Deshalb gibt es eine Fehlermeldung beim Patchen, was aber keine Auswirkungen auf das Erstellen des binary hat. Was könnte die Ursache sein, warum die aclocal.m4 nicht vollständig erstellt wird?

Zuletzt geändert vor 7 Jahren von sf3978 (vorher) (Diff)

comment:5 Antwort: Geändert vor 7 Jahren durch MaxMuster

Sorry, aber das habe ich nicht verstanden.

aclocal.m4 wird doch gar nicht gepatched. Es wird die mit dem trunk geladene Version genutzt, und die sollte identisch sein mit der, die der "alte" Patch aus der 2.10-er Version baut, oder??

Ach so: Mit "Patch raus" meinte ich, dass make/shellinabox/patches/100_bring_to_trunk_r239.patch gelöscht werden soll/muss (siehe mein Anhang).

Zuletzt geändert vor 7 Jahren von MaxMuster (vorher) (Diff)

comment:6 als Antwort auf: ↑ 5 Geändert vor 7 Jahren durch sf3978

Replying to MaxMuster:

aclocal.m4 wird doch gar nicht gepatched. Es wird die mit dem trunk geladene Version genutzt, und die sollte identisch sein mit der, die der "alte" Patch aus der 2.10-er Version baut, oder??

Lt. Datum und Uhrzeit wird die "aclocal.m4", im Rahmen der Konfiguration erstellt/gebaut. Das ist richtig, dass in deinem Paket die "aclocal.m4" nicht gepatcht wird. Da diese Datei bei mir nicht vollständig erstellt wird, habe ich einen Patch für diese Datei gemacht. Wie oben geschrieben, funktioniert das Patchen leider nur mit einer Fehlermeldung. Optimal wäre, wenn die "aclocal.m4" bei der Konfiguration, vollständig erstellt/gebaut wird.

EDIT: Das mit dem Patch "100_bring_to_trunk_r239.patch" hatte ich schon richtig verstanden und der war bzw. ist im Ordner "make/shellinabox/pachtes" auch nicht vorhanden.;-)

EDIT2: Ja, es geht um deinen Anhang. Ich habe nur den Patch (shellinabox_w_svn.patch) aus deinem Anhang benutzt.;-)

Zuletzt geändert vor 7 Jahren von sf3978 (vorher) (Diff)

comment:7 Geändert vor 7 Jahren durch sf3978

Obwohl ich beim Patchen mit dem Patch "130_aclocal_m4.patch" (siehe Anhang), diese Meldung bekomme:

applying patch file make/shellinabox/patches/130_aclocal_m4.patch
patching file aclocal.m4
Hunk #1 succeeded at 7985 with fuzz 2 (offset 7966 lines).

funktioniert das Kompilieren des binary.

Geändert vor 7 Jahren durch sf3978

comment:8 Geändert vor 7 Jahren durch sf3978

Der Fehler könnte beim downloaden mit "$(PKG)_SITE:=svn@http://$(pkg).googlecode.com/svn/trunk" bzw. beim anschliessenden Erstellen des Archivs "shellinabox-236.tar.gz" passieren. Wenn ich dieses Archiv in meinem Buildsystem entpacke, bekomme ich nach "./configure" und "make" auch die Fehlermeldung:

:~/shellinabox-239> make
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/gm/shellinabox-239/missing --run aclocal-1.11 
 cd . && /bin/sh /home/gm/shellinabox-239/missing --run automake-1.11 --gnu
Makefile.am:5: Libtool library used but `LIBTOOL' is undefined
Makefile.am:5:   The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
Makefile.am:5:   to `configure.ac' and run `aclocal' and `autoconf' again.
Makefile.am:5:   If `AC_PROG_LIBTOOL' is in `configure.ac', make sure
Makefile.am:5:   its definition is in aclocal's search path.
make: *** [Makefile.in] Fehler 1

Wenn ich shellinabox trunk rev. 239 mit "svn checkout http://shellinabox.googlecode.com/svn/trunk/ shellinabox-read-only" in mein Buildsystem neu auschecke, funktioniert alles ohne Probleme. Mit einem "diff" sofort nach dem Auschecken auf die beiden Ordner, shellinabox-239 und shellinabox-read-only, kann ich aber keine Unterschiede feststellen. Die Datei "aclocal.m4" wird auch hier verändert. Diese Veränderung findet aber nicht beim "./configure" statt, sondern bei "make" (wird dann auch mit Freetz so sein). Die Datei "aclocal.m4" wird nicht generiert (bei ./configure), sondern sie ist schon Teil der Sourcen von shellinabox.

comment:9 Geändert vor 7 Jahren durch sf3978

_Ergänzung_: Wenn ich in meinem Buildsystem das Verzeichnis "shellinabox-read-only" umbenenne in "shellinabox-239", manuell das Archiv "shellinabox-239.tar.gz" erstelle und dieses Archiv in den dl-Ordner kopieren, dann funktioniert es auch in Freetz ohne Probleme. D. h. das Archiv "shellinabox-239.tar.gz", das mit Freetz generiert wird, ist fehlerhaft.

Geändert vor 7 Jahren durch sf3978

comment:10 Antwort: Geändert vor 7 Jahren durch sf3978

  1. _Ergänzung_: Ich habe noch Folgendes festgestellt: Das "shellinabox-239.tar.gz"-Archiv, das von Freetz erzeugt wird und _nicht_ OK ist, hat eine Größe von 1,0 MB und das "shellinabox-239.tar.gz"-Archiv, das ich manuell (nach manuellem Auschecken) erstellt habe und OK ist, hat eine Größe von 2.1 MB.

comment:11 Antwort: Geändert vor 7 Jahren durch er13

Replying to sf3978:

  1. h. das Archiv "shellinabox-239.tar.gz", das mit Freetz generiert wird, ist fehlerhaft.

Du bist aber ganz schön mutig in dem was Du behauptest ;-) Besonders lustig finde ich aber, dass Du Dir selbst widersprichst:

Mit einem "diff" sofort nach dem Auschecken auf die beiden Ordner, shellinabox-239 und shellinabox-read-only, kann ich aber keine Unterschiede feststellen.

sudo apt-get install libtool (oder wie auch immer es auf Deinem Build-System heißt) ist die Lösung Deines Problems. Oder sorg' dafür, dass autotools gar nicht ausgeführt werden, indem Du die Datei-Timestamps in .mk entsprechend manipulierst…

Edit:

# touch configure.ac to prevent aclocal.m4 & configure from being regenerated
$(PKG)_CONFIGURE_PRE_CMDS += touch -t 200001010000.00 ./configure.ac;
Zuletzt geändert vor 7 Jahren von er13 (vorher) (Diff)

comment:12 als Antwort auf: ↑ 10 Geändert vor 7 Jahren durch er13

Replying to sf3978:

hat eine Größe von 1,0 MB und das … ich manuell erstellt habe - 2.1 MB.

Du hast bestimmt all die .svn-Ordner nicht gelöscht, freetz_download löscht diese.

Edit: habe jetzt mit dem Patch von Jörg alles einwandfrei übersetzen können

Zuletzt geändert vor 7 Jahren von er13 (vorher) (Diff)

comment:13 als Antwort auf: ↑ 11 ; Antwort: Geändert vor 7 Jahren durch sf3978

Replying to er13:

Du bist aber ganz schön mutig in dem was Du behauptest ;-) Besonders lustig finde ich aber, dass Du Dir selbst widersprichst:

Beim Vergleich mit "diff" hatte ich den ".svn"-Ordner noch gelöscht und das wurde angezeigt:

:~> diff shellinabox-239 shellinabox-read-only
Gemeinsame Unterverzeichnisse: shellinabox-239/debian und shellinabox-read-only/debian.
Gemeinsame Unterverzeichnisse: shellinabox-239/demo und shellinabox-read-only/demo.
Gemeinsame Unterverzeichnisse: shellinabox-239/distributions und shellinabox-read-only/distributions.
Gemeinsame Unterverzeichnisse: shellinabox-239/libhttp und shellinabox-read-only/libhttp.
Gemeinsame Unterverzeichnisse: shellinabox-239/logging und shellinabox-read-only/logging.
Gemeinsame Unterverzeichnisse: shellinabox-239/shellinabox und shellinabox-read-only/shellinabox.

OK, im Archiv ist der ".svn"-Ordner drin, weil ich einige Male neu ausgecheckt habe und anscheinend vergessen habe ihn wieder zu löschen. Deshalb der Unterschied in der Größe der Archive.
Danke für den Hinweis mit den Datei-Timestamps in .mk. Ich werde diese dann entsprechend manipulieren.

comment:14 als Antwort auf: ↑ 13 ; Antwort: Geändert vor 7 Jahren durch er13

Replying to sf3978:

Danke für den Hinweis mit den Datei-Timestamps in .mk. Ich werde diese dann entsprechend manipulieren.

  1. mein Edit oben

Außerdem ist mir folgendes beim Review aufgefallen: wget keyboard.png ist jetzt überflüssig (wird mit ausgecheckt). Das Überladen von CC und CFLAGS ist überflüssig. utmpx.h-Patch gefällt mir nicht, schon wieder irgendwelche Teile von irgendeiner libc-Implementierung, kann man das Problem nicht anders lösen?

comment:15 als Antwort auf: ↑ 14 ; Antwort: Geändert vor 7 Jahren durch sf3978

Replying to er13:

Außerdem ist mir folgendes beim Review aufgefallen: wget keyboard.png ist jetzt überflüssig (wird mit ausgecheckt). Das Überladen von CC und CFLAGS ist überflüssig.

Siehe meinen Patch "proper_shellinabox_291210.patch" im Anhang zu diesem Ticket. Dort ist das mit "keyboard.png" und CC bzw. CFLAGS, schon gelöst. Ob meine Kenntnisse ausreichen um das mit dem "utmpx.h-Patch" zu lösen, weiss ich nicht, denn diesen Patch hat Max Muster erstellt.
Übrigens nur zur Info, die libtool32 und libtool waren und sind auf meinem Buildsystem installiert.;-) D. h. libtool ist bei mir nicht die Lösung.;-)

Zuletzt geändert vor 7 Jahren von sf3978 (vorher) (Diff)

Geändert vor 7 Jahren durch er13

comment:16 Geändert vor 7 Jahren durch sf3978

@er13: Danke für deine Hilfe und für den Patch. Jetzt funktioniert es auch bei mir.

Zuletzt geändert vor 7 Jahren von sf3978 (vorher) (Diff)

comment:17 als Antwort auf: ↑ 15 ; Antwort: Geändert vor 7 Jahren durch er13

Replying to sf3978:

Übrigens nur zur Info, die libtool32 und libtool waren und sind auf meinem Buildsystem installiert.;-) D. h. libtool ist bei mir nicht die Lösung.;-)

Wie auch immer, entweder libtool ist nicht da oder autotools finden libtool.m4 nicht, s. z.B. hier, auf jeden Fall ein Problem mit Deinem Build-System…

comment:18 Geändert vor 7 Jahren durch MaxMuster

Replying to er13:

wget keyboard.png ist jetzt überflüssig

jau, hatte ich auf die Schnelle übersehen

utmpx.h-Patch gefällt mir nicht, schon wieder irgendwelche Teile von irgendeiner libc-Implementierung, kann man das Problem nicht anders lösen?

Du schon ;-). Danke!

comment:19 als Antwort auf: ↑ 17 Geändert vor 7 Jahren durch sf3978

Replying to er13:

… oder autotools finden libtool.m4 nicht, s. z.B. hier, auf jeden Fall ein Problem mit Deinem Build-System…

OK. Vielleicht sollte ich weg von OpenSuSE und Ubuntu in Zukunft als Buildsystem benutzen …;-)

comment:20 Geändert vor 7 Jahren durch cuma

  • Typ von enhancement nach addition geändert

comment:21 Geändert vor 6 Jahren durch cuma

  • Meilenstein von freetz-1.3 nach freetz-future geändert

comment:22 Geändert vor 5 Jahren durch MaxMuster

Hier mal ein aktualisierter Patch auf die Version 2.14.
Dabei ist auch ein erster Versuch für eine GUI..

Nach dem Patchen nicht vergessen, die "Ausführbaren" Dateien zu ändern; z.B. mit:
for i in $(grep -B 2 svn:executable shellinabox-2.14.patch | grep -i -o 'make/.*'); do chmod +x $i; done

Geändert vor 5 Jahren durch MaxMuster

comment:23 Geändert vor 5 Jahren durch cuma

Ist make/shellinabox/generate_cert_on_box.sh im richtigen Verzeichnis?

comment:24 Geändert vor 5 Jahren durch MaxMuster

Die Datei ist eigentlich "überflüssig" für das Paket. Sie zeigt nur zwei mögliche Wegen, mit "Box-Mitteln" ein Zertifikat zu bauen.
Eingebaut ist davon die "Simpelvariante" (ohne Einfluss auf die Parameter) in die GUI mittels des Skripts /etc/default.shellinabox/generate_cert.sh.

comment:25 Geändert vor 5 Jahren durch cuma

Achso. Braucht man die "stop () " Funktion so wie sie ist? Laut http://code.google.com/p/shellinabox/wiki/shellinaboxd_man gibt es einen "pid"-Parameter. Benutzer und Gruppen werden sonst überall nur 1x im "load" angelegt

comment:26 Geändert vor 5 Jahren durch MaxMuster

Bei Nutzung von "—pidfile" schreibt er nur die letzte PID rein, bei mir macht er immer zwei Prozesse?!? Stoppen schlägt dann fehl..
Die Standard-Benutzer/-Gruppe sollte wirklich in "load". Theoretisch könnte man jedoch beliebige User/Group Namen nehmen, die dann angelegt werden. Vielleicht sollte man das einfach ganz raus nehmen; dann müssen die halt bei Bedarf selbst angelegt werden, wenn keine vorhandenen genutzt werden…

comment:27 Geändert vor 5 Jahren durch cuma

Mehrere Prozesse für einen Daemon sind nichts außergewöhnliches, schau mal mit "ps" nach. Bei mir ist das auch so bei: vdsld ctlmgr pbd telefon automount udevd. "Normal" beenden sich die Childs wenn der Parent gekillt wird. Evtl muss man nur 1 Sekunde warten?
Soll man für die Benutzer/Gruppe nicht einfach irgendwas vorgeben? Wäre viel einfacher

comment:28 Geändert vor 5 Jahren durch MaxMuster

Zum User: Ja, Vorgabe wäre einfacher. Muss mal sehen, ob das mit "nobody" überhaupt startet, oder ob man root braucht…

Zur PID: Leider wird nur eine PID, und zwar nur die letzte vom Child, in das pidfile geschrieben; der lässt sich nicht killen (weil der Parent überlebt?), wenn man das "normale" stop aufruft, das nur den Inhahalt des PID-Files beendet:

root@Speedport:/var/tmp# ps | grep shell
 2259 root      1128 S    {busybox} grep shell
root@Speedport:/var/tmp# rc.shellinabox start
Starting shellinaboxd ... done.
root@Speedport:/var/tmp# ps | grep shell
 2272 root      1336 S    shellinaboxd -b=/var/run/shellinaboxd.pid -c /tmp/shellinabox -p 8899 -u root -g root
 2273 root      1316 S    shellinaboxd -b=/var/run/shellinaboxd.pid -c /tmp/shellinabox -p 8899 -u root -g root
 2276 root      1128 S    {busybox} grep shell
root@Speedport:/var/tmp# cat /var/run/shellinaboxd.pid 
2273
root@Speedport:/var/tmp# sh -x /etc/init.d/rc.shellinabox stop
+ DAEMON=shellinaboxd
+ CONF_NAME=shellinabox
+ . /etc/init.d/modlibrc

[...snipp...]

+ modlib_stop
+ local fn=/var/run/shellinaboxd.pid
+ cat /var/run/shellinaboxd.pid
+ local id=2273
+ echo -n Stopping shellinaboxd ... 
Stopping shellinaboxd ... + modlib_check_running
+ [ -n  ]
+ [ -x /etc/init.d/rc.inetd ]
+ tr [:lower:]- [:upper:]_
+ echo shellinaboxd_ENABLED
+ eval echo $SHELLINABOXD_ENABLED
+ echo
+ [  == inetd ]
+ [ -n  ]
+ local fn=/var/run/shellinaboxd.pid
+ [ ! -s /var/run/shellinaboxd.pid ]
+ cat /var/run/shellinaboxd.pid
+ kill -0 2273
+ return 0
+ stop_pre
+ :
+ stop 0
+ local retval=0
+ cat /var/run/shellinaboxd.pid
+ local id=2273
+ local cnt=9
+ [ 9 -ge 0 ]
+ kill -0 2273
+ kill 2273
+ local retval=0
+ sleep 1
+ let cnt--

[...snipp...]

+ let cnt--
+ [ -1 -ge 0 ]
+ kill -0 2273
+ kill -9 2273
+ local retval=0
+ sleep 1
+ kill -0 2273
+ return 0
+ local retval=0
+ stop_post 0
+ :
+ kill -0 2273
+ echo failed.
failed.
+ return 0
+ exit 0
root@Speedport:/var/tmp# ps | grep shell
 2272 root      1336 S    shellinaboxd -b=/var/run/shellinaboxd.pid -c /tmp/shellinabox -p 8899 -u root -g root
 2273 root         0 Z    [shellinaboxd]
 2297 root      1128 S    {busybox} grep shell
root@Speedport:/var/tmp# 

comment:29 Geändert vor 5 Jahren durch cuma

Das "stop" von modlibrc mach nur im Notfall ein "kill -9", wenn der Prozess sich nach 10 Sekunden noch nicht beendet hat. Werden deshalb vielleicht die Childs nicht beendet? Die pid 2273 oben wird in ps auch als "zombie" geführt, das war vor längerem öfter ein Problem in Freetz/ds-mod.
Ich vermute ein Problem in shellinaboxd. Lass doch mal vor dem "stop" ein "strace -f -p xxx" mitlaufen

comment:30 Geändert vor 5 Jahren durch MaxMuster

Der "Fehler" ist, dass shellinaboxd nur die PID des zweiten Prozesses in das File schreibt. Killt man den "ersten", dann ist damit auch der zweite weg. Letztlich kann man nicht den normalen "stop" Mechanismus nehmen.
Man könnte aber als "stop_pre" ein "pidof shellinaboxd > /var/run/shellinaboxd.pid" machen, dann gehts ;-).

comment:31 Geändert vor 5 Jahren durch cuma

Wenn da die falsche pid drin ist, geht aber der "status" auch nicht. Vielleicht gleich die richtige pid in die Datei schreiben? Oder beim Author nachfragen? Ein "pidof -s" bringt übrigens immer die höchste pid :-/

comment:32 Geändert vor 5 Jahren durch MaxMuster

Ich nehme alles zurück, und behaupte das Gegenteil. Dein Hinweis auf "pidof -s" war der passende Punkt: die Datei wurde vom "modlib_startdaemon" selbst angelegt, eben mit pidof -s.

Da war mein Aufruf wohl nicht richtig. Ich hatte "-b=var/run/shellinaboxd.pid" versucht, richtig wäre wohl "--background=var/run/shellinaboxd.pid", oder eben "-b --pidfile=/var/run/shellinaboxd.pid".

Geändert vor 5 Jahren durch MaxMuster

Neuer Versuch für GUI und rc-file

Geändert vor 5 Jahren durch MaxMuster

Mal ein Screenshot

comment:33 Geändert vor 5 Jahren durch cuma

In 9346:

add shellinabox, thx er13, sf3978, MaxMuster (refs #1152)

comment:34 Geändert vor 5 Jahren durch cuma

Soweit müsste es laufen. Allerdings hängt die .cgi manchmal beim "übernehmen". Kannst du nochmal drüberschauen?
Und vielleicht mag noch jemand wiki:packages/shellinabox? erstellen. Dort könnte man auch gut die 2 Scripte zum Erstellen der Zertifikatsdatei unterbringen (ich glaub im svn findet die niemand)

comment:35 Geändert vor 5 Jahren durch MaxMuster

Ist das "Hängen" bei laufendem Prozess (wenn beim Übernehmen auch ein Neustart erfolgt) oder auch beim "reinen Konfigurieren", ohne dass das Programm läuft?!?
EDIT: o.k., vermutlich hab ich das jetzt auch gesehen: Wenn man shellinabox startet (oder eben neu startet) wird die Webseite nie "komplettiert", sondern lädt "ewig". Ich muss gestehen, ich weiß aber nicht, was ich da falsch gemacht habe. Es wird alles angezeigt, das Programm wird gestartet, selbst die Statuszeile ist da. Nur, wenn der Start fehlschlägt, lädt die Seite zuende.
Ich denke nicht, dass es an der CGI-Seite liegt, auch die "Dienste" Seite nach dem Start hat das gleiche Phänomen. Aber auch das rc-Skript terminiert bei mir immer, sonst käme ja auch keine Anzeige "done", oder?
Wie gesagt, ist mir nicht klar…

Zuletzt geändert vor 5 Jahren von MaxMuster (vorher) (Diff)

comment:36 Geändert vor 5 Jahren durch cuma

Meine erste Vermutung ist das JavaScript in der cgi. Könnte aber auch was vom Daemonstart sein (offenen pipes?)? Habs jetzt aber nicht mehr auf der Box. Für .cgis wären eh die neuen cgi-functions (#1568) besser. Ein paar Packages haben das schon

comment:37 Geändert vor 5 Jahren durch er13

In 9757:

shellinabox:

  • create nobody user the same way it's done in the other packages using nobody as user to run under (nobody:nobody instead of nobody:nogroup), TODO: move 'nobody'-related code to modlibrc to avoid such inconsistencies
  • refs #1152, refs r9746

comment:38 Geändert vor 5 Jahren durch cuma

In 9759:

modlibrc: add modlib_add_user_and_group (refs #1152)

comment:39 Geändert vor 5 Jahren durch MaxMuster

Ok, werde das rc-skript bei Gelegenheit noch anpassen (shellinabox nutzt als default-group eben “nogroup“)

comment:40 Geändert vor 5 Jahren durch er13

In 9760:

comment:41 Antwort: Geändert vor 5 Jahren durch cuma

@er13 zu r9761: Ich hab den umbenannt da ich davon ausging, dass man die Berechtigungen über die Gruppe "users" regelt und da fast jedes Package einen eigenen Benutzer hat wenn es einen hat. Bei manchen könnten die Benutzer sogar überflüsssig sein, bei openntpd zum Beispiel.
Btw, der Benutzer "ftp" wird nur vom uralten Package bftp verwendet

comment:42 Geändert vor 5 Jahren durch MaxMuster

Änderung von rc-Skript scheint unnötig (shellinabox sucht sich den User zu "nobody", falls der nicht "nogroup" ist. Dann kann es so bleiben; evtl. schiebe ich noch eine GUI-Erweiterung nach, die User und Group enthält, mit dem Stand jetzt bin ich aber noch nicht zufrieden…

comment:43 als Antwort auf: ↑ 41 ; Antwort: Geändert vor 5 Jahren durch er13

Replying to cuma:

Btw, der Benutzer "ftp" wird nur vom uralten Package bftp verwendet

vsftpd nutzt ihn auch. Frage in dem Zusammenhang: was war nochmal der Grund, warum es sowohl ftp:users als auch ftpuser:users gibt. ftpuser kommt, wenn ich mich nicht irre, ursprünglich von AVM, und ftp? Wenn nichts dagegen spricht würde ich den User ftp in ftpuser überall umbenennen.

Replying to MaxMuster:

die User und Group enthält, mit dem Stand jetzt bin ich aber noch nicht zufrieden…

Könnte man shellinabox nicht so patchen, dass dieses nobody als Groupnamen erwartet und nicht nogroup? Spricht was dagegen?

comment:44 Geändert vor 5 Jahren durch cuma

Umbenennen von ftp nach ftpuser wäre ganz sinvoll.
Es wird nur Probleme machen wenn die Berechtigungen vom Dateisystem (freigegebenen Verzeichnissen) nicht mehr stimmen
(Bei bittorrent war umbenennen kein Problem, da im rc jedes mal alle Berechtigungen gesetzt werden)

Zuletzt geändert vor 5 Jahren von cuma (vorher) (Diff)

comment:45 als Antwort auf: ↑ 43 Geändert vor 5 Jahren durch MaxMuster

Replying to er13:

Könnte man shellinabox nicht so patchen, dass dieses nobody als Groupnamen erwartet und nicht nogroup? Spricht was dagegen?

Jau, könnte man. Macht aber m.E. keinen Sinn, weil das Programm selbst das schon abfängt, und beim Ändern auf die Gruppe "nogroup" die Gruppe von "nobody" nutzt, wenn "nogroup" nicht existiert. Das she ich jetzt nicht noch Änderungsbedarf.

Was mir aber generell noch auffällt, ist der von cuma schon im Kommentar 34 genannte "Fehler": Die "Dienste" Seite wartet nach jedem (Re-)Start von shellinabox "unendlich". Irgendwas wird da geöffnet und das CGI "wartet" darauf.
Die Seite wird komplett angezeigt, es steht auch "done" da usw, aber die Seite bleibt im Status "Übertragen der Daten von …". Neu Laden der Dienste Seite hilft, ebenso wie das "killen" des Prozesses. Ist sicher nur eine Kleinigkeit, aber ich finde es nicht.
Auch wenn man das Programm nicht startet (also "modlib_startdaemon" nicht aufruft, oder in "modlibrc" den Dienst nach dem "starten" wieder "killt"), wird die Seite "komplett" geladen, nur eben nicht, wenn das Programm gestartet wird und läuft…
Vielleicht fällt ja jemandem noch was dazu ein, wo es da hängen könnte

comment:46 Geändert vor 5 Jahren durch oliver

Offene Filedescriptors kann man mit strace und lsof eigentlich ganz gut ausfindig machen…

comment:47 Geändert vor 5 Jahren durch MaxMuster

Hatte ich mir schon gedacht, nur, die Ergebnisse helfen mir zumindest nicht wirklich, darin was "Sinnvolles" zu sehen…

Nach einem "normalen" Start zeigt lsof Pipes

/var/tmp # lsof -n | grep "shell\|COMM"
COMMAND     PID    USER   FD      TYPE     DEVICE SIZE/OFF   NODE NAME
shellinab 24615  nobody  cwd       DIR       31,0      304    143 /usr/mww/cgi-bin
shellinab 24615  nobody  rtd       DIR       31,0      213    201 /
shellinab 24615  nobody  txt       REG       31,0  1215808   1399 /usr/bin/shellinaboxd
shellinab 24615  nobody    0r     FIFO        0,5      0t0 168476 pipe
shellinab 24615  nobody    1w     FIFO        0,5      0t0 168475 pipe
shellinab 24615  nobody    2w     FIFO        0,5      0t0 168475 pipe
shellinab 24615  nobody    3u     unix 0x8493f240      0t0 168504 socket
shellinab 24615  nobody    4u     IPv4     168515      0t0    TCP *:4200 (LISTEN)
shellinab 24616  nobody  cwd       DIR       31,0      304    143 /usr/mww/cgi-bin
shellinab 24616  nobody  rtd       DIR       31,0      213    201 /
shellinab 24616  nobody  txt       REG       31,0  1215808   1399 /usr/bin/shellinaboxd
shellinab 24616  nobody    0r      CHR        1,3      0t0    154 /dev/null
shellinab 24616  nobody    1w      CHR        1,3      0t0    154 /dev/null
shellinab 24616  nobody    2w     FIFO        0,5      0t0 168475 pipe
shellinab 24616  nobody    4u     unix 0x83930de0      0t0 168505 socket

o.k., da sind ein paar pipes, suchen wir den Prozess dazu (ist eine Busybox):

/var/tmp # pipenodes=$(lsof -n | grep "shellina" | sed -n '/pipe/ s/.*[ ]\([0-9]*\) pipe/\1\\|/p' | tr -d '\n' | sed 's#\\|$##')
/var/tmp # echo $pipenodes
168476\|168475\|168475\|168475
/var/tmp # pidofpipe=$(lsof -n | grep $pipenodes | sed -n  '/^busybox/ s/busybox[ ]*\([0-9]*\).*/\1/p')
/var/tmp # echo $pidofpipe
24578
/var/tmp # 
/var/tmp # cat /proc/$pidofpipe/cmdline | tr '\000' ' ' ; echo
httpd-webcfg -P /var/run/webcfg.pid -p 81 -c /mod/etc/webcfg.conf -h /usr/mww/ -r Freetz 
/var/tmp # 
/var/tmp # lsof -n | grep "shellin\|$pidofpipe"
busybox   24578    root  cwd       DIR       31,0       45    144 /usr/mww
busybox   24578    root  rtd       DIR       31,0      213    201 /
busybox   24578    root  txt       REG       31,0   539932    221 /bin/busybox
busybox   24578    root  mem       REG       31,0    21528   1207 /lib/ld-uClibc-0.9.32.1.so
busybox   24578    root  mem       REG       31,0   418708   1006 /lib/libuClibc-0.9.32.1.so
busybox   24578    root    0u     IPv6     167873      0t0    TCP 10.100.254.73:freetz->10.100.254.44:53395 (ESTABLISHED)
busybox   24578    root    1u     IPv6     167873      0t0    TCP 10.100.254.73:freetz->10.100.254.44:53395 (ESTABLISHED)
busybox   24578    root    2u      CHR        1,3      0t0    154 /dev/null
busybox   24578    root    3r     FIFO        0,5      0t0 168475 pipe
shellinab 24615  nobody  cwd       DIR       31,0      304    143 /usr/mww/cgi-bin
shellinab 24615  nobody  rtd       DIR       31,0      213    201 /
shellinab 24615  nobody  txt       REG       31,0  1215808   1399 /usr/bin/shellinaboxd
shellinab 24615  nobody    0r     FIFO        0,5      0t0 168476 pipe
shellinab 24615  nobody    1w     FIFO        0,5      0t0 168475 pipe
shellinab 24615  nobody    2w     FIFO        0,5      0t0 168475 pipe
shellinab 24615  nobody    3u     unix 0x8493f240      0t0 168504 socket
shellinab 24615  nobody    4u     IPv4     168515      0t0    TCP *:4200 (LISTEN)
shellinab 24616  nobody  cwd       DIR       31,0      304    143 /usr/mww/cgi-bin
shellinab 24616  nobody  rtd       DIR       31,0      213    201 /
shellinab 24616  nobody  txt       REG       31,0  1215808   1399 /usr/bin/shellinaboxd
shellinab 24616  nobody    0r      CHR        1,3      0t0    154 /dev/null
shellinab 24616  nobody    1w      CHR        1,3      0t0    154 /dev/null
shellinab 24616  nobody    2w     FIFO        0,5      0t0 168475 pipe
shellinab 24616  nobody    4u     unix 0x83930de0      0t0 168505 socket
/var/tmp # 

Da ist also eine Pipe zum httpd-webcfg. Die ist nicht da, wenn der Prozess gestoppt wird. Aber wie komme ich da weiter? Ist das überhaupt "ein Fehler"?

Ein geäderter Programm-Aufruf mit modlib_startdaemon strace -f $DAEMON_BIN $CMDLINE $SHELLINABOX_OPTIONS:

execve("/usr/bin/shellinaboxd", ["shellinaboxd", "-b", "--pid=/var/run/shellinaboxd.pid", "-c", "/tmp/shellinabox", "-p", "4200"], [/* 2 vars */]) = 0
ioctl(0, TIOCNXCL, 0x7fbf68e8)          = -1 EINVAL (Invalid argument)
ioctl(1, TIOCNXCL, 0x7fbf68e8)          = -1 EINVAL (Invalid argument)
prctl(0x4, 0, 0, 0, 0)                  = 0
setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=4195848}) = 0
getrlimit(RLIMIT_CPU, {rlim_cur=2147483647, rlim_max=4195864}) = 0
getrlimit(RLIMIT_DATA, {rlim_cur=2147483647, rlim_max=4195864}) = 0
getrlimit(RLIMIT_FSIZE, {rlim_cur=2147483647, rlim_max=4195864}) = 0
getrlimit(RLIMIT_NPROC, {rlim_cur=476, rlim_max=4195864}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=2147483647, rlim_max=4195920}) = 0
getrlimit(RLIMIT_NPROC, {rlim_cur=2147483647, rlim_max=4195932}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=2147483647, rlim_max=4195996}) = 0
brk(0)                                  = 0x53d000
brk(0x53e000)                           = 0x53e000
brk(0x540000)                           = 0x540000
stat64("/tmp/shellinabox", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0
geteuid()                               = 0
geteuid()                               = 0
fork(Process 22382 attached (waiting for parent)
Process 22382 resumed (parent 22381 ready)
 
[pid 22382] setsid()                    = 22382
[pid 22382] open("/var/run/shellinaboxd.pid", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644) = 3
[pid 22382] getpid()                    = 22382
[pid 22382] write(3, "22382", 5)        = 5
[pid 22382] close(3)                    = 0
[pid 22382] socketpair(PF_FILE, SOCK_STREAM, 0, [3, 4]) = 0
[pid 22382] fork(Process 22383 attached (waiting for parent)
Process 22383 resumed (parent 22382 ready)
 
[pid 22383] getresuid([0], [0], [0])    = 0
[pid 22383] getresuid([0], [0], [0])    = 0
[pid 22383] getresgid([0], [0], [0])    = 0
[pid 22383] setgroups(0, [])            = 0
[pid 22383] open("/etc/group", O_RDONLY) = 5
[pid 22383] ioctl(5, TIOCNXCL, 0x7fbf6610) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 22383] brk(0x541000)               = 0x541000
[pid 22383] read(5, "root:x:0:\nusers:x:1:ntp\nnobody:x"..., 4096) = 107
[pid 22383] close(5)                    = 0
[pid 22383] setresgid(1003, 1003, 1003) = 0
[pid 22383] setresuid(-1, -1, 0)        = 0
[pid 22383] open("/etc/passwd", O_RDONLY) = 5
[pid 22383] ioctl(5, TIOCNXCL, 0x7fbf6670) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 22383] read(5, "root:x:0:0:root:/mod/root:/bin/s"..., 4096) = 972
[pid 22383] close(5)                    = 0
[pid 22383] setresuid(101, 101, -1)     = 0
[pid 22383] open("/dev/null", O_RDWR|O_LARGEFILE) = 5
[pid 22383] open("/proc/self/fd", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 6
[pid 22383] fstat(6, {st_mode=S_IFDIR|0500, st_size=0, ...}) = 0
[pid 22383] fcntl(6, F_SETFD, FD_CLOEXEC) = 0
[pid 22383] getdents64(6, /* 9 entries */, 1024) = 216
[pid 22383] dup2(5, 0)                  = 0
[pid 22383] dup2(5, 1)                  = 1
[pid 22383] close(3)                    = 0
[pid 22383] getdents64(6, /* 0 entries */, 1024) = 0
[pid 22383] close(6)                    = 0
[pid 22383] close(5)                    = 0
[pid 22383] rt_sigaction(SIGCHLD, {0x9, [], 0x403dd0 /* SA_??? */}, NULL, 16) = 0
[pid 22383] rt_sigaction(SIGHUP, {0x10000000, [], SA_NOCLDSTOP}, {SIG_DFL, [], 0}, 16) = 0
[pid 22383] read(4,  
[pid 22382] <... fork resumed> )        = 22383
[pid 22382] close(4)                    = 0
[pid 22382] socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
[pid 22382] setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
[pid 22382] gettimeofday({173115, 689002}, NULL) = 0
[pid 22382] bind(4, {sa_family=AF_INET, sin_port=htons(4200), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[pid 22382] listen(4, 128)              = 0
[pid 22382] getsockname(4, {sa_family=AF_INET, sin_port=htons(4200), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
[pid 22382] getresuid([0], [0], [0])    = 0
[pid 22382] getresgid([0], [0], [0])    = 0
[pid 22382] setgroups(0, [])            = 0
[pid 22382] open("/etc/group", O_RDONLY) = 5
[pid 22382] ioctl(5, TIOCNXCL, 0x7fbf6648) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 22382] brk(0x541000)               = 0x541000
[pid 22382] read(5, "root:x:0:\nusers:x:1:ntp\nnobody:x"..., 4096) = 107
[pid 22382] close(5)                    = 0
[pid 22382] setresgid(1003, 1003, 1003) = 0
[pid 22382] open("/etc/passwd", O_RDONLY) = 5
[pid 22382] ioctl(5, TIOCNXCL, 0x7fbf66a8) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 22382] read(5, "root:x:0:0:root:/mod/root:/bin/s"..., 4096) = 972
[pid 22382] close(5)                    = 0
[pid 22382] setresuid(101, 101, 101)    = 0
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = 5
[pid 22382] fstat64(5, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0
[pid 22382] poll([{fd=5, events=POLLIN}], 1, 10) = 1 ([{fd=5, revents=POLLIN}])
[pid 22382] read(5, "\340B\341zdW\254\213\205j\21\232ni\25\340\f\22\244\236:\326\322\326\336-\2619\274\246\"4", 32) = 32
[pid 22382] close(5)                    = 0
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getuid()                    = 101
[pid 22382] getpid()                    = 22382
[pid 22382] time(NULL)                  = 173115
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] open("/tmp/shellinabox/certificate.pem", O_RDONLY|O_LARGEFILE) = 5
[pid 22382] brk(0x545000)               = 0x545000
[pid 22382] read(5, "-----BEGIN RSA PRIVATE KEY-----\n"..., 16383) = 1888
[pid 22382] close(5)                    = 0
[pid 22382] brk(0x546000)               = 0x546000
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] getpid()                    = 22382
[pid 22382] rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
[pid 22382] rt_sigaction(SIGHUP, {0x80000008, [], SA_SIGINFO|0x401f80}, NULL, 16) = 0
[pid 22382] rt_sigaction(SIGINT, {0x80000008, [], SA_SIGINFO|0x401f80}, NULL, 16) = 0
[pid 22382] rt_sigaction(SIGQUIT, {0x80000008, [], SA_SIGINFO|0x401f80}, NULL, 16) = 0
[pid 22382] rt_sigaction(SIGTERM, {0x80000008, [], SA_SIGINFO|0x401f80}, NULL, 16) = 0
[pid 22382] time([173115])              = 173115
[pid 22382] poll([{fd=4, events=POLLIN}], 1, -1 
[pid 22381] <... fork resumed> )        = 22382
[pid 22381] exit(0)                     = ?

comment:48 Geändert vor 5 Jahren durch oliver

Im Normalfall gibt es für diesen Fall 2 Problemlöser:

  1. start-stop-daemon verwenden
  2. richtig in den Hintergrund gehen (siehe Patch)

Geändert vor 5 Jahren durch oliver

comment:49 Geändert vor 5 Jahren durch MaxMuster

Jau, so geht es. Klasse, wie auch immer du das gesehen hast ;-)

comment:50 Geändert vor 5 Jahren durch oliver

Wenn du dir die daemon-Implementation von uclibc anschaust (http://git.uclibc.org/uClibc/tree/libc/unistd/daemon.c), dann siehst du, dass man da optional die filedescriptors schließen kann (dup2). Das hat im Code von shellinabox gefehlt. An anderer Stelle (launcher.c) wird es jedoch nach dem Fork gemacht.

comment:51 Antwort: Geändert vor 5 Jahren durch cuma

Magst du das noch Upstream melden, MaxMuster?

comment:52 Geändert vor 5 Jahren durch cuma

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert
  • Verantwortlicher auf cuma gesetzt

In 9779:

shellinabox: add use_uclibc_daemon_func.patch, by oliver (closes #1152)

comment:53 als Antwort auf: ↑ 51 Geändert vor 5 Jahren durch MaxMuster

Replying to cuma:

Magst du das noch Upstream melden, MaxMuster?

Hab ich gemacht (http://code.google.com/p/shellinabox/issues/detail?id=213)

comment:54 Geändert vor 5 Jahren durch cuma

Ohje, 3 Jahre alte offene Tickets…

comment:55 Geändert vor 5 Jahren durch oliver

  • Meilenstein von freetz-future nach freetz-2.0 geändert

comment:56 Geändert vor 3 Jahren durch er13

In 13105:

shellinabox:

  • check if uClibc version used contains getgrouplist and provide a replacement for it only if it's really necessary
  • refs #2736, refs #1152
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.