VPSにFTPを可能にするVsftpd設定

KagoyaのVPSで前回サーバーを作成しました

FTPでのやりとりの必要が出てきたので、その設定の備忘録です。

まずは、yumでVsftpdをインストールします。

インストールが完了したら、設定ファイル(/etc/vsftpd/vsftpd.conf)を修正します。vimで修正する前に念のため、cpでバックアップをとります。

スポンサーリンク

 vsftpd.confの設定

anonymous_enable=NO (Default:YES)
use_localtime=YES (Default:NO)
force_dot_files=YES (Default:NO)

まずはこの3つを上記のように修正。

anonymous_enableは、匿名ユーザのログインの可否。
use_localtimeは、ローカルタイムを使用しupした時間との差異を無くす。
force_dot_filesは.(ドット)で始まるファイルを表示。

chrootの設定

ユーザーが自身のホームディレクトリよりも上に行けないようにするための設定をします。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

上記3つの設定で、ユーザー自身のホームディレクトリ配下しか表示されなくなります。

ホームディレクトリ配下以外も表示させたい場合は、chroot_listにユーザーの名前を記述します。(1ユーザー1行です)

chroot_listはサーバー環境によってない場合があるので、ない場合は作成します。記述するユーザーがいない場合でも、必須なので空で作成します。

このchrootの概念が、Vsftpdの鬼門でした。。。

chroot_local_userとchroot_list_enableの組合せが解りづらい。

chroot_list_enable=YES chroot_list_enable=NO
chroot_local_user=YES chroot_listで指定したファイルにリストされたユーザ以外はchroot すべてのローカルユーザはchrootされる
chroot_local_user=NO chroot_listで指定したファイルにリストされたユーザはchrootされる すべてのローカルユーザはchrootされない

User_deny、user_listもわかりづらい・・・。。。

眠い時に作業すると、必ず間違えるので書いておきます。

userlist_enable=(Default:NO)
userlist_deny=(Default:YES)

userlist_enableがYesの場合、下記の図のようになります。

拒否の該当するユーザーがFTPを試みた場合、パスワード入力を求められる前に”Permission denied.”が表示される。

user_listに含まれるユーザ user_listに含まれないユーザ
userlist
_enable=YES
userlist
_deny=YES
拒否 許可
userlist
_deny=NO
許可 拒否
userlist
_enable=NO
許可

ちなみに私の設定は、以下のようにしています。

userlist_enable=Yes
userlist_deny=Yes

この設定だと、user_listに含まれるユーザーはFTPでログインできません。

あとは、Vsftpdを起動して、自動起動設定をすればOK。

以上で、FTP接続可能です。

FTPを許可するIPアドレスを指定する場合。

vstpd.confの tcp_wrapperをYesに変更

hosts.denyに、vsftpd : ALLと記載します。

/etc/hosts.allowで接続を許可するホストをして指定。

Winscpでログインはできるけど、ディレクトリ一覧が表示されない場合

Winscpでディレクトリ一覧の取得ができずにエラーが返ってくる場合。

ip_conntrack_ftpとip_nat_ftpの2つのモジュールを読みこめばOKでした。

/etc/sysconfig/iptables-configに下記を記述しておけば、自動的に読み込まれます。

IPTABLES_MODULES=””を下記のように。
IPTABLES_MODULES=”ip_conntrack_ftp ip_nat_ftp”

参考にさせて頂いたサイト

vsftpdの設定(vsftpd.conf)
スポンサーリンク

シェアする