BUFFALO NASのTera Stationを買いました。
で、早速ネットワークに繋いで読み書きテスト・・・
Windowsからはうまくいったように見える
Linuxからは・・・オーナー情報消えてるじゃん!!
どういうことなの?
ということで調べてみたら
このNAS中身はどうやら普通のLINUXマシンで
NFSの設定(/etc/exports)に all_squash という項目があってどうやらこれがオンになっているご様子
しかたがないので、これを書き換えようとするわけですがここからが苦労の始まりでした。
なぜ、デフォルトでオーナーが消える設定になっているのか偉い人の考えることはよくわからないが、
それがこの世界の節理なので諦めて気合でどうにかすることにする。
nfsについては以下のサイトを参照
ネット上にはいろいろな方法が載っていましたが、各種セキュリティホールがファームウェアがv1.57になって塞がれてしまったためどうしようもなくなってしまった。
以下v1.57より古いファームならできるかもしれない方法です。
ここからはファームv1.57に対しても有効だった方法です。
作業はシリアルポートからコマンドを入力しながらチェックして行うので、USBシリアルケーブルがあると便利です。
表のシリアルポートを使うためにはWebから
http://<テラステーション>/cgi-bin/task.cgi?task=console¶m=on&uuu=admin&ppp=<password>
にアクセスすることで有効になります。
シリアルポートからログインするといろいろ見ることはできますが、書き換えるためにはroot権限が必要です。
実際には、root権限を得るためにファームウェアを書き換えます。
まず、おおもとのファームウェアを落としてきます。(下はTerastation Xシリーズのファームウェアです)
ファームウェアをダウンロード・展開すると(tsx-157/TS-X_FW1.57あたりに)
hddrootfs.img
initrd.img
があります。
これらはimgとなっていますが両方ともただのzipファイルです。
拡張子を書き換えて開こうとするとパスワードを聞かれますが適当に↓とかを参考にして展開します。
ここではinitrd.imgの中身が重要です。
initrd.imgの中身initrd.buffalo を書き換えます。
ここからはLINUXでないと大変なのでUBUNTUを使いました。
以下のコマンドでinitrd.buffalo をマウントできます。
# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
# gunzip initrd.gz
# mkdir /tmp/root
# mknod /dev/loop0 b 7 0
# mount -o loop initrd /tmp/root
これで/tmp/root以下にinitrd.buffaloの内容が展開されます。
ここで適当にファイルを書き換えられます。
書き換え自体は自由にできるのですが、Tera Stationでは起動時に一部設定ファイルを初期化しようとするので
初期化されないファイルを選んで書き換える必要があります。
自分はとりあえず以下を参考にしてrootのパスワード消去を行いました。
書き換えが終了したら、新たにinitrd.buffalo を作成します。
# umount /tmp/root
# gzip initrd
# mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo
これで作成したinitrd.buffaloをもう一度暗号化zip圧縮をして、
元のファイルを上書きしてファームウェアアップデートを行うと書き換えたファームウェアを使って書き込めます。
この時に失敗する場合には
ファームウェアアップデートのフォルダにあるTSUpdater.iniのVersionCheckを0にしたり、NoFormattingを0にしたりすることで回避できます。
以上の方法でroot権限を手に入れたらあとはシリアル接続から設定ファイルなども自由に変更できます。
------------
以下、上記以外の参考リンク
initrd.baffaloの改造
ddコマンド
コメントする