クソ小さなLinux Telnetサーバーがハングする

クソ小さなLinux Telnetサーバーがハングする

私は仮想マシンでDamn Small Linux(または「DSL」)を使用しています(「純粋な」Debianベースではありません。apt-getにアクセスできます)。
Telnetサーバー(telnetd + xinetd)をインストールしました。
また、今回はTelnetクライアント(LinuxディストリビューションAntiX)がインストールされている別の仮想マシンを実行します。

Telnet を使用して AntiX から DSL に接続すると、ログイン + パスワードの入力を求められます。問題ありません。
ところでログインをするとメッセージだけを開いて停止します。 「凍結」とは次のとおりです。

  1. 必要な内容を入力できますが、Enterキーを押すとコマンドは実行されません。代わりに、カーソルが次の行に移動します。
  2. 「dsl@dsl$」(コマンドプロンプト)行は表示されません。
  3. サーバー側(DSL)では、ログインするとウィンドウが点滅します(閉じます)。

プロセスが実行されているように見えますが、問題はプロセスが決して停止しないことです。停止してコマンドラインを使い続けるには、「Ctrl + C」と入力する必要があります。

静止したときのスクリーンショットは次のとおりです。Telnet停止スクリーンショット

また、DSL Webサイトには、apt-getを介して誤ったアプリケーションをインストールすると、「Xサーバーなど」がクラッシュする可能性があるという警告があります。これはXサーバーですか?

私の質問は次のとおりです

  1. どのプロセスが実行されているのかわかりますか?私はそれが再起動しないように努力しています。
  2. Telnet経由で接続するときにこのプロセスが開始されないようにすることはできますか?

ルートログインを使用してエラーを再現することもできます。

答え1

これによるとウィキページabout /home/dsl/.bash_profile, このファイルのデフォルトの内容は ssh でログインしていることを確認し、そうでない場合は、startx次のコマンドを使用して X11 グラフィックサーバーを起動します。

#!/bin/bash
export IRCNICK=DSL
SSH=`env | grep SSH_CONNECTION`
RUNLEVEL=`runlevel|cut -f2 -d' '`
if [ -z "$SSH" ]; then
   if [ $RUNLEVEL -eq 5 ]; then
       startx
   fi
fi

したがって、Telnet からログインすると ssh が検出されず、startxX11 が実行される可能性があります。最も簡単な解決策は、このファイルを編集してコマンドにコメントを追加する: startxか、Telnet接続を何とか検出することです。 Telnet は通常特別な環境変数を設定しません。このコマンドを使用して、物理ttyコンソールではなく擬似端末にあることを確認できます。たとえば、SSH=この行の後に次を追加します。

case `tty` in
/dev/pts*) SSH=telnet ;;
esac

dslたとえば、他のユーザーの場合は、rootホームディレクトリを見て、/home/dslと異なることを確認し、合計.profileを確認する必要があります.bash_profile。たとえば、次のディレクトリを探します。

awk -F: '$1=="root"{print $6}' /etc/passwd

関連情報