PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nano in chrooted shell



killerhorse
23.11.04, 02:06
Hallo,

Habe auf meinem Server einen sshd mit Patch installiert, damit ich chrooted Accounts erstellen kann. Damit der User auch ein paar Programme nutzen kann, hab ich natürlich die entspr. Programme + libaries in den Homeordner des Users kopiert. Mit Programmen wie cp und ls ... funktioniert das auch.
Wenn ich das Ganze mit Nano versuche und diesen dann in der chrooted Shell starte, tritt folgender Fehler auf:

Error opening terminal: xterm.

Was hat das Ganze mit xterm zu tun, das ist ja sowieso nicht auf meinem Server installiert...

MfG

Christian

Tomek
23.11.04, 02:18
Wahrscheinlich benötigt nano noch einige Libaries. Mit Hilfe von ldd kannst du schauen, welche Libaries die Programme benötigen:

$ ldd `which nano`
libncurses.so.5 => /lib/libncurses.so.5 (0x40021000)
libc.so.6 => /lib/tls/libc.so.6 (0x40060000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

$ ldd `which vim`
libncurses.so.5 => /lib/libncurses.so.5 (0x40021000)
libgpm.so.1 => /usr/lib/libgpm.so.1 (0x40060000)
libdl.so.2 => /lib/tls/libdl.so.2 (0x40067000)
libc.so.6 => /lib/tls/libc.so.6 (0x4006a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

tictactux
23.11.04, 02:34
Error opening terminal: xterm.
Was hat das Ganze mit xterm zu tun, das ist ja sowieso nicht auf meinem Server installiert...
Du startest ihn auf Deinem Rechner aus einem xterm (zumindest
lautet Deine TERM-Variable so). Ich hoffe, das klärt den Zusammenhang.

Versuche mal "TERM=ansi nano". Das kann klappen, wenn nur die
Terminal(terminfo)-Datenbank fehlt, ansonsten installiere wie Tomek sagt, ncurses (das beinhaltet terminfo).

killerhorse
23.11.04, 05:47
Mit Hilfe von ldd kannst du schauen, welche Libaries die Programme benötigen:

Genau das hab ich getan..... Bringt aber nichts. Das funktioniert bei allen Programmen, nicht bei nano.



Du startest ihn auf Deinem Rechner aus einem xterm.

Auf welchem jetzt? Sind beides meine Rechner. Am Server kann ich kein xterm starten, da es nicht installiert ist. Am Client auch nicht, da sich nano auch per Putty under Windoof öffnen lässt. Verwende im Moment Windows.



Versuche mal "TERM=ansi nano". Das kann klappen,

Error opening terminal: ansi.

MfG

Christian

tictactux
23.11.04, 11:17
Hallo christian,

Auf welchem jetzt? Sind beides meine Rechner.
gemeint ist der Windows-Rechner, auf dem Du die Terminal-Emulation
laufen hast (putty?). Die Terminal-Kennung (hier xterm) kannst Du in putty
auch explizit konfigurieren. Diese bezieht sich auf das Programm welches die
Ausgabe von pico anzeigt (putty), und nicht auf ein xterm auf dem Server.
Fazit: Du mußt wohl ncurses/terminfo in der chroot-Umgebung installieren,
so daß die ncurses-Bibliotheken und z.B. /usr/share/terminfo/x/xterm verfügbar
sind.

Gruß,
Wolfgang

killerhorse
24.11.04, 21:11
Fazit: Du mußt wohl ncurses/terminfo in der chroot-Umgebung installieren,
so daß die ncurses-Bibliotheken und z.B. /usr/share/terminfo/x/xterm verfügbar
sind.


OK, Danke, funkt!!! Hab jetzt /etc/terminfo/x/xterm nach /home/chrootedUser/etc/ kopiert.

Hab aber noch ein anderes Problem. Ich möchte z.B. einen Gameserver chrooted laufen lassen. Dazu benötige ich "screen". Wenn ich das aber starten will heisst es:

getpwuid() can't identify your account!

Würde mich freuen, wenn mir hier nochmal jemand die ungefähre Richtung sagen önnte wo ich suchen soll.

MfG

Christian

Tomek
24.11.04, 21:14
getpwuid() can't identify your account!

Würde mich freuen, wenn mir hier nochmal jemand die ungefähre Richtung sagen önnte wo ich suchen soll.

Er kann User bzw. die ID nicht lesen. Anscheinend fehlt ihm die Datei /etc/passwd. Kopiere sie ebenfalls in deine Chroot-Umgebung.

tictactux
24.11.04, 21:17
Hab aber noch ein anderes Problem. Ich möchte z.B. einen Gameserver chrooted laufen lassen. Dazu benötige ich "screen". Wenn ich das aber starten will heisst es:

getpwuid() can't identify your account!
Als welcher User führst Du das aus ? Das entsprechende
Konto muß einen gültigen Shell-Eintrag haben (man usermod
oder man chsh), aber überlege vorher, ob das für dieses Konto
wirklich sicherheitstechnisch ok ist.

killerhorse
24.11.04, 21:42
Hallo,

Danke für die schnelle Antwort. Werde mir die entspr. manpages durchlesen. Bis jetzt hab ich es immer so gemacht, dass ich mich mit dem User "gameserver" eingelogt hab, dann einfach "screen" eingegeben, dann das Startscript für den Gameserver (UT2003) und dann strg+a+d gedrückt. Danach hab ich mich wieder ausgelogt und der Server ist weitergelaufen.
Leider funktioniert es nicht wie bei anderen Prozessen mit strg+z und dann "bg" (background).
Da der Gameserver aber wohl das unsicherste ist was auf meinem Server läuft, möchte ich das Ganze eben in einem chrooted account laufen lassen.
Also screen sollte nach wie vor als "gameserver" ausgeführt werden.

MfG

Christian

tictactux
24.11.04, 22:06
ich meine hier im Forum schon etliche Diskussionen und Skripte
gesehen zu haben, die einen Gameserver remote als daemon starten.
Vielleicht lohnt eine Suche.

cane
24.11.04, 22:21
Kurzer Einschub:

Ich kompiliere Programme die in chroot-Umgebungen eingesetzt werden wenn möflich statisch - dann hat man auch keine Probleme mit Libs...

mfg
cane

killerhorse
24.11.04, 22:28
OK, so langam funktioniert eh alles. Eine letzte Frage noch. Das Problem beim UT2003 Server war ja, dass wenn ich den in den Hintergrund lege, die Ausgabe trotzdem auf der normalen Konsole ist.
Hab das Ganze jetzt gelöst indem ich /dev/null einfach in das Homeverzeichniss des Users kopiert und die Ausgabe dahin umgeleitet hab. Scheint zu funktionieren,"null" wird auch nicht grösser, wird also nicht als normale Datei behandelt.
Kann es hierbei zu irgendwelchen Problemen kommen oder meint ihr, dass man das so machen kann?

MfG

Christian

cane
24.11.04, 22:41
/dev/null wird nie größer weil Dateien die an /dev/null gesendet werden ins Linux-Nirwana gehen :)

Wennn Du auf die Ausgaben verzichten kannst sollte es gehen.

cane

killerhorse
24.11.04, 22:43
/dev/null wird nie größer weil Dateien die an /dev/null gesendet werden ins Linux-Nirwana gehen :)
cane
Das war mir schon klar, ich wusste nur nicht ob ich das einfach kopieren kann und das im chrooted Homeordner dann genauso funkt.

MfG

Christian