CentOS のインストール時に FTP サーバーをインストールすると vsftpd がインストールされますが、OS インストール時に FTP サーバをインストールしなかった場合でも、yum コマンドによってインストールすることができます。なお、本ページの動作確認は CentOS5.3 で行っています。
スポンサーリンク
yum による vsftpd のインストール
yum -y install vsftpd
インストール自体は以上ですが、最低限 FTP サーバとして運用するためには、もう少し設定が必要です。
FTP デーモン(サービス)の起動
インストールした vsftpd を起動します。
service vsftpd start vsftpd 用の vsftpd を起動中: [ OK ]
自動起動設定
必要なときに毎回 FTP サーバを手動で起動させてもよいですが、ほとんどの場合は OS 起動時に自動で立ち上げる場合がほとんどだと思います。自動起動は chkconfig コマンドで行います。
# 自動起動設定 chkconfig vsftpd on # 自動起動確認 chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ファイアウォールの設定確認
通常 OS インストール時に FTP サーバをインストールしていれば、FTP ポートは開放されているはずですが、開放されていない場合は 21 番ポート(デフォルトの場合)を開放します。
# ファイアウォール設定ファイルを開く vi /etc/sysconfig/iptables # この行を追加します -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT #ファイアーウォールの再起動 service iptables restart ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] ・・・
FTP クライアントからの接続確認
次に FTP クライアントからの接続確認を行います。ここでは、Windows から ftp コマンドで接続を行っています。正常に接続できれば、接続確認は完了です。しかし、CentOS をデフォルトのままインストールしている場合、以下のエラーが発生する可能性が高いです。
500 OOPS: cannot change directory:/home/host
500 OOPS: child died
Connection closed by remote host.
このエラーが発生する場合は、SELinux の設定が有効になっていて接続エラーとなっている可能性が高いです。とりあえずは SELinux 自体を無効にすることで対処することとします。
vi /etc/selinux/config SELINUX=enforcing ↓ 変更する SELINUX =disabled
次に OS の再起動を行い SELinux が無効になっていることを確認します。確認には、getenforce コマンドを使用します。Disabled と表示されれば SELinux は無効状態です。
getenforce Disabled
その他の設定
ここまでで FTP サーバの簡単な設定は完了ですが、FTP サーバを本格的に運用する段階になると、/etc/vsftpd/vsftpd.conf や、ftpusers および user_list で さらに細かいアクセス制御などを行う必要があるかもしれませんし、このページでは SELinux 自体を無効としましたが、SELinux は有効のまま FTP サーバを動作させる必要があるかもしれません。
ただ、現在ではセキュリティの観点から FTP ではなく、SFTP や FTPS を利用するほうが良いと思います。FTP は使用しないほうが良いでしょう。しかし、現在でも社内システムなどでは FTP は十分現役であると思います。