私は仮想マシンでDamn Small Linux(または「DSL」)を使用しています(「純粋な」Debianベースではありません。apt-getにアクセスできます)。
Telnetサーバー(telnetd + xinetd)をインストールしました。
また、今回はTelnetクライアント(LinuxディストリビューションAntiX)がインストールされている別の仮想マシンを実行します。
Telnet を使用して AntiX から DSL に接続すると、ログイン + パスワードの入力を求められます。問題ありません。
ところでログインをするとメッセージだけを開いて停止します。 「凍結」とは次のとおりです。
- 必要な内容を入力できますが、Enterキーを押すとコマンドは実行されません。代わりに、カーソルが次の行に移動します。
- 「dsl@dsl$」(コマンドプロンプト)行は表示されません。
- サーバー側(DSL)では、ログインするとウィンドウが点滅します(閉じます)。
プロセスが実行されているように見えますが、問題はプロセスが決して停止しないことです。停止してコマンドラインを使い続けるには、「Ctrl + C」と入力する必要があります。
また、DSL Webサイトには、apt-getを介して誤ったアプリケーションをインストールすると、「Xサーバーなど」がクラッシュする可能性があるという警告があります。これはXサーバーですか?
私の質問は次のとおりです
- どのプロセスが実行されているのかわかりますか?私はそれが再起動しないように努力しています。
- 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 が検出されず、startx
X11 が実行される可能性があります。最も簡単な解決策は、このファイルを編集してコマンドにコメントを追加する: 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