2011年3月29日火曜日

vsftpdにおける、ユーザごとのデフォルトディレクトリ設定方法

先日、今まで使っていたサーバ(ノートPCでVineLinux)をReplaceしました。
今度もたいした性能ではなく、HPの二台で15kという格安サーバです。うるさいです。
で、今度はCentOSを突っ込んでみました。
それに伴いftp用のソフトもvsftpdも入れてみたのですが……

そこでちょっと困ったのが、ftpでログインした時のデフォルトディレクトリについて。
例えば"hoge"ユーザを作った際、標準的なディレクトリ構成だと

home―hoge―public_html(ファイルはここだけにUPさせたい)
     |
     ―その他のフォルダ

こんな構造になっています。何の設定もせずにhogeユーザでログインすると、
当然デフォルトディレクトリは

/home/hoge/

配下。public_htmlディレクトリ以外も全部見えちゃいます。
これはちょっと都合悪いなーと思い、どうすればいいか探した結果以下のようになりました。

1.vsftpdの設定ファイルを修正し、ユーザごとの設定ファイル用ディレクトリを作る
/etc/vsftpd/vsftpd.conf
を開き、以下の行を追加します。

user_config_dir=/etc/vsftpd/userconf

勿論、最初は"userconf"というディレクトリは存在しないので
自分で作成する必要があります。
これより、/etc/vsftpd/userconf配下にユーザ名のファイルを
作る事で、ユーザごとの設定が反映されるようになります。

2. 1で指定したディレクトリを作成
一々書く必要も無いかもしれませんが、↑で設定したディレクトリを
作成します。mkdirして下さい。

3.設定したいユーザ名のファイルを作成
ユーザ名が"hoge"だった場合、

/etc/vsftpd/userconf/hoge

というファイルをオープンします。(viとかでいいです)

4.ユーザごとに設定したい内容を記述
ここでユーザごとに設定したい事を記述していきます。
今回であれば、デフォルトディレクトリを決めたいので

local_root=./public_html

このように記述します。


これで今まではhogeユーザでログインした際に

/home/hoge/

にログインしていた所が、

/home/hoge/public_html

にログインする事になります。簡単!