TeraStation Pro TS-HTGL/R5のrootを取ってみた


会社のNASとして昔使ってたテラステを廃棄しようと、入っていたデータを引き抜く作業をし続けていました。で、いくつかのデータをCIFSで読み出すことができなくて困っていたのですが、コンソールでログインしてみるとユーザー権限がおかしいのです。テラステはNFSでmountしたりすることができるので、Linuxからmountしていた人がCIFSで読めないパーミションで書いてしまっていたみたいでした。

そんなわけで、バックアップを取るために、テラステのrootになって、chmodしようと思いました。
ググってみると、acp_commander.jarというJavaアプリケーションを使ってテラステのrootのパスワードを消し、telnetdを立ちあげる方法がありました。が、これは最新のファームである1.35には使えない方法のようです。ファームを1.34に巻き戻してみようとも試みたのですが、うまくアップデーターを使って巻き戻すこともできません。

仕方ないので、シリアルコンソールを接続し、シングルユーザーモードに入ってrootのパスワードを消去、ということをしました。
手順は次のとおりです。
シリアルコンソールを有効にするには、テラステが起動している状態で、ブラウザから次のURLにアクセスしてやります。

http://TS-HTGLのIPアドレス//cgi-bin/task.cgi?task=console¶m=on&uuu=admin&ppp=adminのパスワード

すると、背面のUPS用のシリアルポートに、115200bps, 8bit, 1 stop bit, no parity, no flow controlで接続することができるようになります。
この状態では、管理画面のadminとそのパスワードでログインすることができますが、rootになれないので、問題を見つけることしかできませんでした。

シングルユーザーモードに入るには、テラステをシャットダウンし、ディスクの格納されている扉の上にある小さなスイッチを押しながら電源を入れます。
こうするとEMモードという状態で起動することができ、シリアルコンソールでU-Bootにアクセスすることができます。
boot中に何かキーを押してU-Bootのコンソールを出し、printenvしてみると、

bootargs=$(bootargs_base) $(bootargs_root)
bootargs_base=console=ttyS0,115200
bootargs_root=root=/dev/sda2 rw initrd=0x00800040,15M panic=5

という設定になっていました。ここで、

setenv bootargs_root 'root=/dev/sda2 rw initrd=0x00800040,15M panic=5 emergency init=/bin/sh'

とコマンドを入力し、シングルユーザーモードで起動するように設定をします。次にbootコマンドを打つと、シングルユーザーモードでテラステが起動します。
rootになっているので、vi /etc/shadowをし、rootのパスワードを削って消してやりました。rebootコマンドが使えなかったのでsyncして電源を引っこ抜きました。

再度テラステを通常起動させると、rootのパスワードが消えているはずです。さきほど書いたURLにアクセスし、シリアルコンソールを有効にしてやると、シリアルコンソールからrootでログインできました。
あとはpasswd rootして適当なパスワードを付け、cd /usr/local/sbin、./sshdすると、手元のマシンからテラステにrootでsloginできました。
これでpermitionを直して、CIFSから無事にデータを引っこ抜けました。