DISCLAIMER
まず、officialかつ最新の情報を確認してください。
Running Your Own Application at Startup http://wiki.qnap.com/wiki/Autorun.sh
以下、自分用のメモの散逸を防ぐため、もしくは誰かのヒントになればと文書化しました。
また、実際の設定はセキュリティの問題などがあり、そのまま公開できないので、適当に編集してあるため、 このままでは正しい動作はしない可能性が高いです。
このメモを試したのはQNAP Systems IncのTS-220というNASです。
http://www.qnap.com/jp/index.php?lang=jp&sn=699&c=328&sc=601&t=610&n=18427
ソフトウェアのバージョンはQTS 4.0 (中身はLinuxでuname -r
すると2.6.33.2というバージョンが返ってきます。)
そもそも
QNAPのNASのOSは、サービスの設定を再起動の度に初期化してしまうようです(自分はまだ試していないが、次のサイトなどに記載があります。 http://motd.jugem.jp/?eid=188 ただこれは古いバージョンの話かもしれません。)
だからsshやtelnetで接続して設定を変更しても、再起動するとオジャン。逆に考えれば、どんだけいじってめちゃめちゃにしても再起動すればそれなりに動く(かもしれない)というfool proofになっています。(現在のQTS 4.0でもそうかどうかは保証できません)
なので、設定をいじる場合には
- 初期化されない領域を確保
- 設定ファイルを初期化されない領域にコピー
- 設定ファイルのコピーを変更して(バージョン管理しとくべき)、元の設定ファイルに上書きする
- サービスを再起動またはreconfigして動作を確認
- 設定ファイルを、初期化されない領域にあるものに差し替えるshellスクリプトを作成
- NASの起動時に実行されるコマンドをサービス毎に指定できる
/etc/config/qpkg.conf
にftp用の項目を追加する
それでは順を追って
初期化されない領域を確保
mkdir -p /share/MD0_DATA/.dpkg/autorun
設定ファイルを初期化されない領域にコピー
NOW=`date +%Y%m%d-%H%M%S`
cp /etc/config/proftpd.conf /share/MD0_DATA/.dpkg/autorun/proftpd.conf.$NOW.backup
cp /etc/config/proftpd.conf /share/MD0_DATA/.dpkg/autorun/proftpd.conf
設定ファイルのコピーを変更して(バージョン管理しとくべき)、元の設定ファイルに上書きする
vi /share/MD0_DATA/.dpkg/autorun/proftpd.conf
cp /share/MD0_DATA/.dpkg/autorun/proftpd.conf /etc/config/proftpd.conf
サービスを再起動またはreconfigして動作を確認
再起動
/etc/init.d/ftp.sh restart
reconfig (設定のreload)
/etc/init.d/ftp.sh reconfig
設定ファイルを、初期化されない領域にあるものに差し替えるshellスクリプトを作成
vi /share/MD0_DATA/.dpkg/autorun/setupftp.sh
内容
#!/bin/sh
cp /etc/config/proftpd.conf /share/MD0_DATA/.dpkg/autorun/proftpd.conf.`/bin/date +%Y%m%d%H%M%S`.boot.backup
cp /share/MD0_DATA/.dpkg/autorun/proftpd.conf /etc/config/proftpd.conf
/etc/init.d/ftp.sh restart
実行可能なパーミッションの設定
chmod +x /share/MD0_DATA/.dpkg/autorun/setupftp.sh
NASの起動時に実行されるコマンドをサービス毎に指定できる/etc/config/qpkg.confにftp用の項目を追加する
[autorun]
Name = autorun
Version = 0.1
Author = kgbu
Date = 2014-07-06
Shell = /share/MD0_DATA/.qpkg/autorun/setupftp.sh
Install_Path = /share/MD0_DATA/.qpkg/autorun
QPKG_File = autorun.qpkg
Enable = TRUE
どんなことがしたかったか
注意!)以下の変更は他のサービスとの整合性を考えれば実施すべきではなく、たまたまFTPサーバーとしてだけ運用するケースだったので実施した。
- Umaskが000なのが気持ち悪かったので、変えたかった。(それをいうならRootLogin onも変えたいですが)ただ、これを変えた場合に、他のサービスとの整合性が保たれるかは疑問です。
- FTPの特権ユーザー(例えば ftpadmin )が、他のユーザーのディレクトリの内容を読み書きできるようにしつつ、他のユーザーはchroot(proftpdの場合はDefaultRootの設定)されたままにしたかった。これはFTPの特権ユーザーの属するgroupをDefaultRootで独自の設定にして、ホームディレクトリの設定(/etc/passwd)を変更することで実現できる。
DefaultRoot ~ ftpadmin
DefaultRoot /share
ところで、このNASのproftpdでは、chroot(DefaultRootを指定)した場合、ログインしたディレクトリは書き込みができない。ログインディレクトリを/etc/passwdをいじっていろいろ設定してみたがダメだった。
この件については以下のサイトでも指摘されていました。
http://www.big-55.com/2013/02/qnap_ftps%E3%81%A7%E5%A4%96%E9%83%A8%E3%81%8B%E3%82%89%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9_proftpd-conf%E3%82%92%E3%81%84%E3%81%98%E3%82%8B/