Linux - 共通事項 - FTP - vsftpd

 
1. 概要
2. インストール
3. 有効化・起動
4. Firewall の設定
5. ドットファイルを表示させるには
6. ASCII 転送モードを許可する

1. 概要

 設定のたぐいをあちこちに書き散らしていますが、機会があればここにまとめていこうと思っています。  Linux では、FTP サーバとしては、vsftpd を使用するのが一般的なようです。

2. インストール

 ディストリビューションによって、あらかじめインストールされている場合もありますが。  インストールするのであれば、vsftpd レベルであれば、コマンドでインストールするのが手っ取り早い。  RedHat 系であれば

yum install vsftpd
 Ubuntu 系であれば

apt install vsftpd

3. 有効化・起動

 インストール後に状況を見てみます。

$ systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
 Ubuntu 系では、インストール直後に、有効化して起動されていることの方が多いですが。  RedHat 系では、有効化・起動が必要なことが多いです。  有効化は

$ systemctl enable vsftpd.service
 起動は

$ systemctl start vsftpd.service

4. Firewall の設定

 vsftpd を起動しても外部から接続できないとき。  まずは、Firewall の設定を疑います。  root ユーザで

$ systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-02-25 08:02:13 JST; 1h 27min ago
     Docs: man:firewalld(1)
 Main PID: 699 (firewalld)
    Tasks: 2 (limit: 4700)
   Memory: 35.5M
   CGroup: /system.slice/firewalld.service
           mq699 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid

 2月 25 08:01:51 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
 2月 25 08:02:13 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
 この場合は、Firewall が起動しています。  FTP のポートを空けるのが正式なやり方ですが、手っ取り早く、FTP をちょっとだけ通したいなら、止めちゃいます。

$ systemctl stop firewalld.service

5. ドットファイルを表示させるには

 デフォルトでは「.」(ドット) で始まるファイルは、リストされないようです。  リストされるようにするには

/etc/vsftpd/vsftpd.conf
 に1行

force_dot_files=YES
 加えて、再起動すればリストされるようになります。

6. ASCII 転送モードを許可する

 漢字コードに関して、クライアントマシンが Shitf-JIS で、ホストが EUC のとき。  FFFTP で、漢字変換して転送した場合、改行コードの面倒を見てくれることになっていますが・・・。  vsftpd の場合は、デフォルトの設定のままだと、改行コードが変換されません。  CentOS 6.8 では

/etc/vsftpd/vsftpd.conf
 の

# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
 を

# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
 と変更して再起動することにより、改行コードが変換されるようになります。