CentOS7でFTPサーバーを立てる手順

このブログのテスト環境はHyper-VにインストールしたCentOSにApacheとMySQLとPHPを入れて構築しています。いわゆるLAMPというやつ。

テンプレートをいじるのはDreamweaverです。

別にどうせコード直書きだから単なるテキストエディタで十分っちゃ十分なんですが、折角AdobeCC契約してるんだし、使わなきゃ損じゃん?と。

Dreamweaverを使い始めて変わったことは、FTPソフトをインストールしなくなったこと。

きっちりサイト設定を行っていると、ローカルファイルを保存したら自動でテストサーバーにPUTしてくれたりなんだったりと非常に便利なんですね。本番にPUTする際もいちいちアップロードフォルダまで遷移しなくていいし。その分融通効かないところはありますけど。

なので新たに立てたテストサーバもFTP対応させたいな、と。

と、いうわけで意気揚々とFTPサーバを立てたわけですが、まあ苦労したのでメモ。

一番ハマったところはuserlistの登録漏れでした。


スポンサーリンク

1.さくっとvsftpをインストール

まずはLinuxで広く使われているFTPであるvsftpをインストールします。

#yum -y install vsftpd

2.設定ファイルを編集する

vsftpの設定ファイルである/etc/vsftpd/vsftpd.confを編集します。

修正する項目

  • 匿名ユーザのアップロード機能を無効にする
    anonymous_enable=NO
  • タイムアウト時間を変更
    idle_session_timeout=600
    data_connection_timeout=60
  • アスキーモードでのファイル転送を有効にする
    ascii_upload_enable=YES
    ascii_download_enable=YES
  • ホームディレクトリより上の階層に対するアクセス制限を有効にする
    chroot_list_enable=YES
    chroot_local_user=YES //この一行は追記
    chroot_list_file=/etc/vsftpd/chroot_list
  • ディレクトリの削除を許可する
    ls_recurse_enable=YES

追加する項目


スポンサーリンク

3.ファイアウォールのポートを開ける

次に、FTP接続を受けられるよう、ファイアウォールのポートを開けます。

#firewall-cmd --add-service=ftp --zone=public --permanent
#firewall-cmd --reload

4.FTPを起動する

ここまでで設定は完了した(はずだった)ので、FTPを起動します。

#systemctl start vsftpd.service

サーバ再起動時にFTPを自動起動させる場合は以下のコマンドも打っておきましょう。

#systemctl enable vsftpd.service

5.つながらない!!遂にSELinuxを切る

ところが、MacのDreamweaverから接続を試みるも、失敗。まあ一発でいけるとは思ってなかったさ。

で、前日にSELinuxに苦しめられていたこともあり(WordPressにプラグインがインストールできなくてSELinuxの設定を見直した話)、どうせまたお前だろ?と、いっそSELinuxを切っちゃうことにしました。

SELinuxを永続的にオフにするには、/etc/selinux/configを編集します。

SELINUX=disabled

上記を設定後、再起動を行います。

…ところが、それでもダメだったんですね。

6.userlistにちゃんとユーザを登録していなかった

手順2でvsftpd.confに設定していた以下の記述。

userlist_enable=YES
userlist_deny=NO

これは、ふたつ合わせてホワイトリスト方式でユーザのアクセスを許可するという設定になるんですね。

ユーザリストがどこにあるかというと、/etc/vsftpd/user_listです。

開いてみると、接続しようとしていたユーザが載ってない。いやー、アホですね。そりゃ接続できるわけないでしょ、という。

罠だったのが、FTP接続できなくてコマンドラインからももちゃもちゃやってた間、rootでの接続も試みていたんですね。ところが実際にuser_listを開くと、rootも初期では載っていないのです。いや一本取られた。

というわけで、user_listを編集後、下記コマンドでFTPを再起動。

#systemctl restart vsftpd.service

無事に接続できるようになりました!!めでたしめでたし。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*