Linux - 共通事項 - FTP - vsftpd
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
yum install vsftpd
apt install vsftpd
$ systemctl status vsftpd.service ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
systemctl enable vsftpd.service
systemctl start vsftpd.service
$ 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.
$ systemctl stop firewalld.service
/etc/vsftpd/vsftpd.conf
force_dot_files=YES
# 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
500 OOPS: priv_sock_get_cmd
seccomp_sandbox=NO allow_writeable_chroot=YES