[HD-HGLAN] HD-HGLAN に telnet を導入

2006.03.14



Linkstation(HD-HGLAN) に telnet を導入する方法は

  1. Linkstation のハードディスクをはずし、他の Linux Box につないで telnet を導入する。
  2. ファームに telnet を導入し、Linkstation を update する。
がありますが、 ポピュラーな方法は 1 で、検索すればインターネット上に様々な情報があります。
同じ方法でやっても面白くないのと、ファームの update の度に Linkstation を分解しなければならないので、今回は、2 の方法でやります。 ただし、ファームウェアにはパスワードがかかっているため、パスワードが分かっていないとどうしようもありません。 パスワードについは、質問されても答えられません。 自分で何とかできない場合は、1 の方法でやるしかありません。

バッファローのホームページから最新のファームをダウンロードします。
今回は、Ver.1.52b1 を使いました。
ダウンロードしたファイルを実行すると、ファームウェアのイメージが解凍されます。
このなかの image.dat が zip 圧縮された Linux システムの tarball です。
拡張子を zip に変更して解凍するのですが、パスワードがかかっています。

うまく解凍できると、tmpimage.tgz と言うファイルができます。
この tmpimage.tgz を Linux Box へコピーします。私は、玄箱で作業しました。 root で作業します。
まず、tmpimage.tgz のあるディレクトリに移動し作業用のディレクトリを作成します。
# mkdir FW_root
tmpimage.tgz を展開します。
# cd FW_root
# tar xvfzp ../tmpimage.tgz
telnet を動かすには、inetd, telnetd が必要です。
どこから持ってくるかと言うと、Linkstation の兄弟の Kuro-Box/HG のファームウェアから持ってきます。
玄人志功のホームページから、ファームをダウンロードして解凍し、解凍された image.zip ファイルを更に解凍すると、tmpimage.tgz が得られます。 (こちらのファームウェアにはパスワードはかかっていません) これが、Kuro-Box/HG のシステムです。このなかから、
 usr/sbin/inetd
 usr/sbin/in.telnetd
 usr/lib/telnetlogin
 etc/init.d/inetd
を Linkstation のファームを展開した場所にコピーします。

次に Linkstation のファームの etc/ にエディタで次の内容の inetd.conf を作成します。
# vi etc/inetd.conf
内容:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

さらに inetd が自動起動するように etc/rc.d/rc2.d にシンボリックリンクを作成します。 特に必要はありませんが、etc/rc.d/rc0.d, etc/rc.d/rc6.d にもシンボリックリンクを作成しておくと精神衛生上いいかと。
# cd etc/rc.d/rc2.d
# ln -s ../init.d/inetd S20inetd
# cd ../rc0.d
# ln -s ../init.d/inetd K20inetd
# cd ../rc6.d
# ln -s ../init.d/inetd K20inetd
# cd ../../..

さて、これで telnet でログイン出来るようになりますが、root にはパスワードがかかっているのでこれを何とかしなければなりません。
ファームイメージの passwd ファイルを編集しても、update の場合、元の passwd ファイルに復元されるためうまくいきません。
そこで、etc/rc.d/rc2.d に S99makeroot と言う名前で次の内容のファイルを作成します。
起動時に root 権限のダミーユーザを作成するスクリプトです。
# vi etc/rc.d/rc2.d/S99makeroot
内容:
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
grep "^tmproot" /etc/passwd >/dev/null || echo "tmproot::0:0:root:/root:/bin/bash">>/etc/passwd
入力ミスをしないように注意してください。passwd ファイルを壊して最悪ログインできなくなってしまいます。
S99makeroot に実行属性を設定します。
# chmod +x etc/rc.d/rc2.d/S99makeroot

tmpimage.tar.gz を作成します。
# tar cvfzp ../tmpimage.tgz .
あとは、tmpimage.tgz を zip 圧縮し、image.dat に名前を変更して Linkstation のファームウェアを update すれば OK です。

update がうまくいったら telnet で tmproot でログインしてみて下さい。 ログインできたら、root のパスワードを設定します。
# passwd root
/etc/rc.d/rc2.d/S99makeroot を削除し、/etc/passwd の tmproot を削除しておわりです。


<< 戻る HLWG で telnet>>