Linux - 共通事項 - FTP - vsftpd

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

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
 と変更して再起動することにより、改行コードが変換されるようになります。

7. 500 OOPS: priv_sock_get_cmd

 本項は、「vsftpdを設定した - Qiita」を参考にさせていただきました。  いくつかのディストリビューションによっては(例えば「OpenMandriva 4.0」)、クライアントからのコマンドで

500 OOPS: priv_sock_get_cmd
 てな感じでエラーになることがあります。  こういうときは、「vsftpd.conf」に、以下の2行を加えます。

seccomp_sandbox=NO
allow_writeable_chroot=YES
ハイスピードプランPoint anytime