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

サーバー
スポンサーリンク

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

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

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

# yum install vsftpd

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

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.org 
# vim /etc/vsftpd/vsftpd.conf
スポンサーリンク

 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はサーバー環境によってない場合があるので、ない場合は作成します。記述するユーザーがいない場合でも、必須なので空で作成します。

# touch /etc/vsftpd/chroot_list

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

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

chroot_list_enable=YESchroot_list_enable=NO
chroot_local_user=YESchroot_listで指定したファイルにリストされたユーザ以外はchrootすべてのローカルユーザはchrootされる
chroot_local_user=NOchroot_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。

# service vsftpd restart
# chkconfig vsftpd on

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

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

vstpd.confの tcp_wrapperをYesに変更

# vim /etc/vsftpd/vsftpd.conf

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

# vim /etc/hosts.deny
vsftpd : ALL 

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

# vim /etc/hosts.allow
vsftpd : xxx.xxx.xxx.xxx

 

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)
タイトルとURLをコピーしました