このブログのテスト環境は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
追加する項目
- サービス名の設定
pam_service_name=vsftpd
- 接続できるユーザを制限
userlist_enable=YES
userlist_deny=NO - タイムスタンプをローカル時間(日本)に合わせる
use_localtime=YES
- パッシブモードを有効にする
※【参考】パッシブモードとは
FTPのアクティブモードとパッシブモードの違いは、データ転送の接続方向
pasv_promiscuous=YES
pasv_min_port=50000
pasv_max_port=50030
スポンサーリンク
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
無事に接続できるようになりました!!めでたしめでたし。