|
08 IO-DATA製LANDISKをいぢる
|
1.まえおき |
IO−DATAからLANDISKを購入。(HDL−GTRシリーズ)
で、以下のような共有フォルダを作ろうとしました。
作成フォルダ名 | a |
フォルダ権限 | ユーザ"A"及び管理者は、書き込み可 その他のユーザは読み取り専用 |
ファイルの提供者"A"とそれを受け取る者とで権限を分けて、提供者以外はそこに書き込めないようにしたかったのですが、そういう設定が管理画面のどこにも見当たらない。
フォルダaに対して「読み取り専用」にするかどうかの設定はあるのですが、ユーザやグループに対しての設定がどこを探してもない。
これでは読み取り専用のフォルダを誰もメンテナンスできない?
これが信じられなくてメーカーに問い合わせたところ、以下の回答が
略 :
また、読み取り専用となっております共有フォルダには、大変申し訳ございませんが、HDL-GTR2U2.0の設定画面から読み取り専用を解除していただかないと、管理者であっても書き込みすることができません。
: 略
|
LANDISKの中身はsambaだと知っていたのでこれくらいの事はできると思い込み調べなかったのが悪い。
とはいえ、購入した以上無駄にはできないので、sambaの設定を直接変更することにしました。
というわけで、そのカスタマイズの内容を書いていきます。
|
2.まずはtelnetできるようにしよう |
LANDISKの設定は管理画面でしか行えません。sambaの設定を直接変更するには、telnetやsshでLANDISKにログインしなければなりません。
幸いLANDISKにはtelnetdが起動されてないだけで、導入はされてるらしいです。
なら、それを起動するだけでtelnet接続が可能になります。簡単。
最初に、LANDISKのファームウェアを最新にします。
IO−DATAのサイトから、最新版をダウンロードします。
ファームウェア自身はUNIXファイルですが、自動解凍ファイルはWindowsファイルなので解凍する環境のOSに合わせたファームウェアを選択します。(↓はWin2000用)
ダウンロードしたexeファイルを起動すると、update.tgzが出てきますので、それをLANDISKの管理画面からファームウェア更新画面を開き、参照ボタンを押してupdate.tgzを選択します。
※バージョンを見てすでに最新であれば、更新する必要はないです
LANDISK上のファームウェアと、ダウンロードしたupdate.tgzが同じバージョンになったら、update.tgzを基にtelnetd起動版に改造して、それをファームウェア更新すれば完成です。
大雑把に書くと、update.tgzの中からrc.localを残して全部削除し、rc.localの最後の行にtelnetdを起動する処理を追加します。
では、具体的に行った操作について順を追って書いていきます。
update.tgzの改造はUNIX環境で行う必要があるので、まずはUNIX環境に転送して、それから以下のように操作します。
まずlsコマンドでupdate.tgzがあることを確認
作業ディレクトリの作成を行い、作業ディレクトリに移動、そこにupdateg.tgzを解凍
sh-3.00# mkdir hdl2u
sh-3.00# cd hdl2u
sh-3.00# tar xvfz ../update.tgz
conf_HDL-GT.tgz
conf_HDL-GTR.tgz
fix_112.tgz
for_HDL-GTR_series
for_HDL-GT_series
landisk-update.sh
rmlist
update-files.tar.gz
update.pl
|
不要なファイル及びディレクトリを削除
sh-3.00# rm -rf conf_HDL-GT.tgz fix_112.tgz rmlist update.pl conf_HDL-GTR.tgz
sh-3.00# ls
for_HDL-GTR_series for_HDL-GT_series landisk-update.sh update-files.tar.gz
|
残ったファイルはそれぞれ次のような用途のファイルです
ファイル | ファイルの用途 |
for_HDL-GTR_series | バージョン番号が入っている |
for_HDL-GT_series | バージョン番号が入っている |
landisk-update.sh | 更新プログラム |
update-files.tar.gz | 更新対象 |
|
更新プログラムlandisk−update.shをエディタで編集。不要な部分を削除する
sh-3.00# vi landisk-update.sh
|
landisk−update.shの内容は500行近くもあるのですが、update−files.tar.gzを展開する箇所だけあればいいので、それを残して他は消しまくります。
出来上がったファイルをcatコマンドで見ると以下のようになります。
sh-3.00# cat landisk-update.sh
#!/bin/sh
#
# landisk-update.sh
#
# $Id$
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
ROOTPATH='/mnt/hda5/.update'
TARFILE="${ROOTPATH}/update-files.tar.gz"
# remount rw /
mount -o remount,rw,noatime /
# tarで展開
tar xpzf ${TARFILE} -C / || exit_select 1
|
本当は元ファイルの最後のほうにごみファイルの削除処理があるのですが、どうせtelnetして自分で消せばいいので、その行も削除。
次に、update−files.tar.gzを変更します。
作業ディレクトリの作成を行い、そこに移動し、update−files.tar.gzを解凍します。
sh-3.00# mkdir upd
sh-3.00# cd upd
sh-3.00# tar xvfz ../update-files.tar.gz
./bin/
./bin/busybox
./boot/
:
:
./usr/share/locale/pl/LC_MESSAGES/
./usr/share/locale/pl/LC_MESSAGES/quota.mo
|
解凍したファイルをlsコマンドで確認すると以下のようになります。
sh-3.00# ls
bin boot dev etc lib root sbin usr
|
etc/init.d/rc.local以外は全部削除します。
まずetc以外を全部削除。
その後etcに移動し、init.d以外は全部削除。
最後にinit.dに移動し、rc.local以外は全部削除します。
sh-3.00# rm -rf [!e*]
sh-3.00# ls
etc
sh-3.00# cd etc
sh-3.00# ls
apache2 blkid.tab cron.weekly init.d logrotate_post
apcupsd blkid.tab.old default logmail rc2.d
sh-3.00# rm -rf [!i]*
sh-3.00# ls
init.d
sh-3.00# cd init.d
sh-3.00# ls
apcupsd lcd rc.local sysklogd ups-monitor
fwcheck mountraid shutdown umountfs winbind
sh-3.00# rm [!r]*
sh-3.00# ls
rc.local
|
次に、rc.localをエディタで編集し、最後の行にtelnetdを起動する行を追加します。
出来上がったファイルをcatコマンドで見ると以下のようになります。
sh-3.00# cat rc.local
:
:
ln -s $WWW_DIR/$BASENAME.$MODEL_SUFFIX.cgi $WWWMODEL_DIR/$file
;;
esac
done
# TELNET
telnetd
|
telnetするためのもう一つ、etc/securettyファイルの作成を行います。
一つ上の階層に移動し、securettyファイルをエディタで新規作成します。
sh-3.00# cd ..
sh-3.00# ls
init.d
sh-3.00# vi securetty
|
securettyファイルの内容は、ただpts/0があるだけ。(念のためconsoleも用意)
securettyファイルをcatコマンドで見ると以下のようになります。
sh-3.00# cat securetty
console
pts/0
|
lsコマンドで確認しながら、あとは圧縮していきます。
sh-3.00# ls
init.d securetty
sh-3.00# cd ..
sh-3.00# ls
etc
sh-3.00# tar cvfz ../upd.tar.tgz .
./
./etc/
./etc/securetty
./etc/init.d/
./etc/init.d/rc.local
sh-3.00# cd ..
sh-3.00# ls
for_HDL-GTR_series landisk-update.sh upd.tar.gz
for_HDL-GT_series upd update-files.tar.gz
sh-3.00# rm -rf upd
sh-3.00# mv upd.tar.gz update-files.tar.gz
sh-3.00# ls -l
合計 16
-rw-r--r-- 1 root root 5 2月 8 11:45 for_HDL-GTR_series
-rw-r--r-- 1 root root 5 2月 8 11:45 for_HDL-GT_series
-rwxrwxrwx 1 root root 461 7月 4 14:18 landisk-update.sh
-rw-r--r-- 1 root root 2184 7月 4 14:24 update-files.tar.gz
|
for_xxxxファイルにバージョンが書かれているので数値を更新します。
今回は、内容が1.24だったので1.241に変更しました。
catコマンドで見た結果↓
sh-3.00# cat for_HDL-GTR_*
1.241
sh-3.00# cat for_HDL-GT_*
1.241
|
最後に、update.tgzを作成します。
sh-3.00# tar cvfz ../update_new.tgz *
for_HDL-GTR_series
for_HDL-GT_series
landisk-update.sh
update-files.tar.gz
sh-3.00# cd ..
sh-3.00# ls
update_new.tgz update.tgz
|
出来上がったupdate_new.tgzを、管理画面にて更新します。
バージョン1.241であることを確認し、更新ボタンを押します。
※1.241ですがこの値は更新されないのでアップデート後のバージョンは1.24のままです。これによって失敗してもやり直しができます。
これでtelnetできるようになります。実際にtelnetして、パスワード変更とアップデート時のごみ掃除を行います。
以下、telnet後〜パスワード変更の画面
Using fallback suid method
LANDISK login: root
Linux LANDISK 2.6.12.6-arm1 #4 Fri Feb 8 10:22:50 JST 2008 armv5tejl GNU/Linux
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
LANDISK:~# mount -o rw,remount /
LANDISK:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
LANDISK:~#
|
アップデート時にできたファイルを削除する画面
LANDISK:~# cd /mnt/hda5/.update
LANDISK:/mnt/hda5/.update# ls
for_HDL-GTR_series for_HDL-GT_series landisk-update.sh update-files.tar.gz
LANDISK:/mnt/hda5/.update# rm *
LANDISK:/mnt/hda5/.update# ls
LANDISK:/mnt/hda5/.update#
|
|
3.そしてsambaの設定を直接変更…しなかった |
当初の目的は、1つの共有フォルダに対しユーザによって権限を分けることですが、権限が別の共有フォルダを複数用意し元をシンボリックリンクすれば同じことなのだし、こちらの方が簡単なので、そうすることにしました。
管理画面で共有フォルダを2つ用意する
a_write:ユーザ「system」だけが利用可能。書き込み可
a_read:すべてのユーザが利用可能。読み取り専用
LANDISKにtelnetし、上記2つの共有フォルダのディレクトリを一つに
LANDISK:~# cd /mnt/sataraid1/share
LANDISK:/mnt/sataraid1/share# ls -l
合計 0
drwxr-xr-x 2 nobody nobody 8 2008-07-07 14:22 a_read
drwxrwxrwx 2 system system 124 2008-07-07 13:15 a_write
drwxrwxr-x 2 nobody nobody 8 2008-07-04 17:48 disk1
LANDISK:/mnt/sataraid1/share# rm -rf a_read
LANDISK:/mnt/sataraid1/share# ln -s a_write a_read
LANDISK:/mnt/sataraid1/share# ls -l
合計 0
lrwxrwxrwx 1 root root 7 2008-07-07 14:23 a_read -> a_write
drwxrwxrwx 2 system system 124 2008-07-07 13:15 a_write
drwxrwxr-x 2 nobody nobody 8 2008-07-04 17:48 disk1
LANDISK:/mnt/sataraid1/share#
|
|
おわり
|
|