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=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。
# 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”
参考にさせて頂いたサイト
質問などあればお気軽に!