ftpユーザごとにNAS上の利用ディレクトリを制限する

NASをマウントしたftpサーバで、ftp上のディレクトリをftpユーザごとに干渉せずに使いたいので調べてみました。まずはメモベースで書き込み。後で手順を整理するかも知れません。
使った環境は、CentOS5.5、vsftpdの組み合わせ。NASはautofsを使ってcifsをオートマウント。ftpユーザは上位ディレクトリへのchrootを禁止。マウントポイントは/nasftpユーザのホームディレクトリは/home/ftpuser。

1.マウント場所にシンボリックリンクを張ってみる。

当然ながら上位ディレクトリへのchrootを禁止のためパーミッションエラー。期待はしていなかったので当然の結果。

2.ftpユーザごとにホームディレクトリ上にマウントポイントを追加してみる。

マウントできて、他ユーザのディレクトリを見えないような構成を実現できた。でも、ユーザが増えるごとに/etc/auto.masterを追加しないといけない。ユーザを追加したタイミングでautofsの再起動が必要になるので、運用と相談が必要。

3.ftpユーザのホームディレクトリをNASマウント上に設定してみる。

オートマウントするディレクトリ上にホームディレクトリを設定するのには抵抗がありましたが、一番試してみたかった手法です。結果、難なくftp接続成功。NASを落とした状態でアクセスすると、ディレクトリが存在しないためエラーになる。

PS C:\> ftp 192.168.1.xxx
192.168.xxx.xxx に接続しました。
220 (vsFTPd 2.0.5)
ユーザー (192.168.xxx.xxx:(none)): ftpuser
331 Please specify the password.
パスワード:
500 OOPS: cannot change directory:/nas/mountpoint
500 OOPS: child died
接続がリモート ホストによって閉じられました。

/etc/passwdを変更するだけなので設定は楽です。

結論

個人的には2番が好きだが、設定が楽なので運用を考えると3番かな。NASマウントに障害が起きている時にftpエラーで検知できるから、エラー処理も楽かも知れない。