Terastation は NFS 機能を持った NAS だが、初めはすべてのアクセスがユーザIDもグループIDも99に書き換えられてしまう設定になっている。
これは NAS 内の /etc/exports の設定によるが、Web UI からは変更ができない。
しかも、この /etc/exports は定期的に生成される仕組みになっているので、このファイルを書き換えても再起動等のタイミングで設定が戻ってしまう。
そこで、NAS にスクリプトを仕込んで /etc/exports を書き換えられるようにする。
まず、acp_commander を入手。
http://linkstationwiki.svn.sourceforge.net/viewvc/linkstationwiki/acp_commander/trunk/
http://downloads.buffalo.nas-central.org/TOOLS/ALL_LS_KB_ARM9/ACP_COMMANDER/
次に、crontab を使って root 権限でスクリプトを動かせるようにする。
TERA_IP は Terastation の IP アドレス。
/etc/cron/crontabs/root の権限を変更する
$ java -jar acp_commander.jar -t $TERA_IP -c "chmod 777 /etc/cron/crontabs/root" -ip $TERA_IP
Terastation の telnet を起動($ADMIN_PASS は Web UI の admin のパスワード)
$ java -jar acp_commander.jar -pw $ADMIN_PASS -t $TERA_IP -ip $TERA_IP -o
telnet でログイン (user=admin)
$ telnet $TERA_IP
ここからは Terastation 上での操作。
現在の設定をバックアップ
$ mkdir backup_files $ cp /etc/init.d/nfs.sh backup_files
nfs.sh をコピーして変更する。
$ cp /etc/init.d/nfs.sh nfs_mod.sh $ vi nfs_mod.sh add_insecure_option のあとに以下の行を追加する。 perl -pi -w -e 's/all_squash,anonuid=99,anongid=99/no_root_squash/g;' /etc/exports
cron で実行させるスクリプトを作成する。(/home/prueba.sh)
#!/bin/sh cp /home/nfs_mod.sh /etc/init.d/nfs.sh chmod 755 /etc/init.d/nfs.sh
/etc/cron/crontabs/rootに以下の行を追加
* * * * * /home/prueba.sh
Terastation の web ツールにアクセスして NFS をカーネルモードに変更する。
これでユーザID及びグループIDが書き換えられるのを防ぐことができる。