CygwinでTelnet/Ftpサービスを設定するメモ
 

動作環境

・Windows2000でしか設定していない。噂ではWindows9x/me系はダメらしい(噂)

・TCP/IP がインストールされていること、またネットワーク環境で行うこと

・inetd のサービスを開始すると、Telnet、ftp ポートが空いてしまうのでセキュリティ等は気を付けること(当方では、そのへん一切感知しません)

Telnetとは

Telnet とはUNIXの仮想端末としてそのサーバマシン使用することで、昔はUNIX端末自体が高くて、いまのようにホイホイ買えない状況だったんです。でそのときに考え出されたのが、Telnetで大昔はテレタイプ(telnetの名前は、ここから来ているとの噂も)をRS-232Cで繋いで使っていたり、ちょっと10年位前はPC-98を使ったりして、UNIXの端末として使っていたのです。そもそもこのTelnetは、文字だけの出力(正確には、ASCIIキャラクターセット)なので、グラフックを使ったソフトやGUIを使用する場合には、使えませんが、Cのプログラムミングや、環境設定等の事には十分使えるので、いまでも使用している人が多いのです。

ユーザ権限の設定

Windows2000に特化して話を進めます。Telnetのサービスを開始するには、Windows側で、「サービスとしてログオン」、「クォータの増加」、「オペレーティングシステムの一部として機能」、「プロセスレベルトークンの置き換え」の4つを設定しなければいけません。この設定は、デフォルトでは「クォータの増加」以外offになっていますので以下の手順にて設定する必要があります。ちなみにinetdを起動するユーザは、Administrator権限を有している必要があります。

1) 「管理ツール−ローカルセキュリティポリシー」を選択しプログラムを起動します。

2) セキュリティの設定ツリービューから、「ローカルポリシー−ユーザー権限の割り当て」を設定し、「サービスとしてログオン」、「クォータの増加」、「オペレーティングシステムの一部として機能」、「プロセスレベルトークンの置き換え」の4つを設定します。

3) たとえば「クォータの増加」を設定する場合、「ポリシー」の「クォータの増加」をダブルクリックすると、以下のロカールセキュリティポリシーの設定画面が表示されるので、ここでポリシーの設定をするユーザまたはグループの設定をします。

4) 前のロカールセキュリティポリシーの設定画面で、"追加"ボタンを押下するとユーザーまたはグループの選択画面が出てきますので、ここでポリシーとして追加したいユーザまたはグループを指定します。

5) 「サービスとしてログオン」、「クォータの増加」、「オペレーティングシステムの一部として機能」、「プロセスレベルトークンの置き換え」の4つの設定が終わったら、一旦システムを再起動した方がよいでしょう。

/usr/bin/iu-configの実行

ここからが Cygwin の設定です。Telnet サーバを起動するためには、以下のファイルが必要なのですが、/usr/bin/iu-config を実行すると自動的に作成してくれます。

/etc/ftpusers
/etc/ftpwelcome
/etc/inetd.conf
/etc/motd
/etc/shells

 

/etc/passwd ファイルの作成

Windowsで作成したアカウントは、Cygwin 上で "mkpasswd -l > /etc/passwd" とやることで、/etc/passwd ファイルが更新されます。そのためWindows側で追加したアカウントを Cygwin に反映する場合は、mkpasswd コマンドを適時実行してください。但し、ユーザのホームディレクトリや、シェル等などを変更する場合は、vi等のエディタで直接編集してください。

/etc/group ファイルの作成

グループファイルも同様に Cygwin 上で "mkgroup -l > /etc/group" とやることで、/etc/group ファイルが更新されます。こちらも、Windows側で追加したグループを Cygwin に反映する場合は、適時実行してください。

但し、mkgroup では "なし" と言うグループが作成されるので、"none" に修正して保存してください。

inetdの起動(テスト実行)

このままでは Telnet サーバが起動していない(というかネットワークサービスが停止している)ので inetd を起動してサービスを開始します。

1) Cygwin のウインドウを2つ用意し、1つ目のウインドウで "/usr/sbin/inetd -d" と実行する。

2) もう1つのウインドウで、"/usr/bin/telnet localhost" と実行し、自分のマシンの Cygwin に Telnet 経由で入ってみる。passwd が正しく入力されれば、"Fanfare!!!" という表示がされログインできるはずです。うまくログインできない場合は、いままでの操作を見直してください。問題解決ともっと詳しい事は、ここを参照してね。

inetdの起動設定

毎回 Cygwin のウインドウを開いて inetd するのは面倒なので、inetd を Windows のサービスとして登録します。

1) ディスクトップにある、「マイコンピュータ」をマウスの右ボタンで選択しシステムプロパティを表示させます。「詳細タグ」の環境変数ボタンを押下し、"PATH" 環境変数に ";C:\Cygwin\bin" を追加しシステムを再起動してください。(下記はWindows2000での設定画面)。

2) Cygwin で "inetd --install-as-service" と実行し、Windows が inetd をサービスとして起動できるように設定します。※削除する場合は、"inetd --remove-as-service"です。

3) Dos窓 で "net start inetd" と実行し、Windows での inetd をサービスを開始します。ここで、ダイナミックライブラリ cgywin1.dll が・・・と表示された場合は、1)のシステム環境変数を見直してください(パスが違う場合のエラーが殆どです)。

4) 他の端末から Telnet をしてやり、以下のログイン文字が表示されれば ok です。ダメな場合は、Cygwin をインストールしたディレクトリの "/usr/doc/Cygwin/inetutils-1.3.2.README" を参照してみてください。

5) 注意点として、IISやApatch 等のサービスが起動している場合のテストはしておりません。

←topへ