vsftpdは、ディレクトリの内容を一覧表示すると、コード421で接続を閉じます。

vsftpdは、ディレクトリの内容を一覧表示すると、コード421で接続を閉じます。

現在、vsftpdの接続の問題で問題が発生しています。

私はアーチLinuxを使用しており、vsftpdバージョン3.0.3がインストールされています。

私はiptablesなどを使用しません。 FTPサーバーに接続すると、正常にログインしてディレクトリに移動できます。ファイルをアップロードしてダウンロードすることもできます。

FTPユーザーは自分のホームディレクトリとしてルートを指定し、すべてのサブディレクトリはftpユーザーが所有します。

現在の構造:

|- home_dir
   |- dir1
      |- dir2
         |- dir3
         |- dir3
         |- dir4
         |- ...

dir1に「cd」して「ls」を実行し、ファイルをアップロード/ダウンロードできます。 dir2に「cd」することもできますが、ここには難しい部分があります。

dir2にファイルを完全にアップロードできますが、「ls」を実行すると、サーバーが接続を閉じて「421サービスを使用できません。リモートサーバーが接続を閉じました」というメッセージが表示されます。原因は"dir2"の複数のサブディレクトリにあることがわかりました。 8つのサブディレクトリがすべて存在すると、接続が失われることがわかりました。一度削除すると、リストは正常に機能します。すべての名前には、特殊文字なしでaからzまでの小文字のみが含まれます。

私のFTP設定:

log_ftp_protocol=YES
anonymous_enable=NO

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

pasv_addr_resolve=YES
pasv_address=mydomain.com
pasv_enable=Yes
pasv_min_port=40020
pasv_max_port=40030

local_enable=YES

write_enable=YES

local_umask=002

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES


chown_uploads=YES
chown_username=myuser


ftpd_banner=Welcome.

chroot_local_user=YES

FTP-Logサーバーは次のように言います。

Wed Dec 28 13:55:06 2016 [pid 2] CONNECT: Client "<client_ip>"
Wed Dec 28 13:55:06 2016 [pid 2] FTP response: Client "<client_ip>", "220 Welcome."
Wed Dec 28 13:55:07 2016 [pid 2] FTP command: Client "<client_ip>", "USER myuser"
Wed Dec 28 13:55:07 2016 [pid 2] [myuser] FTP response: Client "<client_ip>", "331 Please specify the password."
Wed Dec 28 13:55:07 2016 [pid 2] [myuser] FTP command: Client "<client_ip>", "PASS <password>"
Wed Dec 28 13:55:07 2016 [pid 1] [myuser] OK LOGIN: Client "<client_ip>"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "230 Login successful."
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "OPTS UTF8 ON"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "200 Always in UTF8 mode."
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "PWD"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "257 "/" is the current directory"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "TYPE I"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "200 Switching to Binary mode."
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "PASV"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "227 Entering Passive Mode (<server_ip>,156,86)."
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "LIST"
Wed Dec 28 13:55:07 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "150 Here comes the directory listing."
Wed Dec 28 13:55:08 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "226 Directory send OK."
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "CWD /dir1"
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "250 Directory successfully changed."
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "PASV"
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "227 Entering Passive Mode (<server_ip>,156,92)."
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "LIST"
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "150 Here comes the directory listing."
Wed Dec 28 13:55:09 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "226 Directory send OK."
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "CWD /dir1/dir2"
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "250 Directory successfully changed."
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "PASV"
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "227 Entering Passive Mode (<server_ip>,156,87)."
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP command: Client "<client_ip>", "LIST"
Wed Dec 28 13:55:11 2016 [pid 3] [myuser] FTP response: Client "<client_ip>", "150 Here comes the directory listing."

ログには常に「150ディレクトリのリストがあります」その後停止します。何度も試してみました。

端末で ftp コマンドを使用すると、次のように表示されます。

$ ftp -n 127.0.0.1

Connected to 127.0.0.1.
220 Welcome.
ftp> user myuser
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    4 1000     1000         4096 Dec 28 13:27 dir1
226 Directory send OK.
ftp> cd dir1
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxr-xr-x    1 1000     1000       469504 Dec 23 03:03 file_1
-rw-r--r--    1 1000     1000          186 Feb 19  2016 file_2
-rw-r--r--    1 1000     1000       121856 Dec 23 00:16 file_3
-rw-r--r--    1 1000     1000       118272 Feb 12  2016 file_4
-rw-r--r--    1 1000     1000        88232 Mar 22  2016 file_5
-rw-r--r--    1 1000     1000        64680 Mar 22  2016 file_6
-rw-r--r--    1 1000     1000       101032 Mar 22  2016 file_7
-rw-r--r--    1 1000     1000         6144 Mar 22  2016 file_8
-rw-r--r--    1 1000     1000       899584 Mar 22  2016 file_9
drwxrwxr-x   42 1000     1000         4096 Dec 28 11:38 dir2
226 Directory send OK.
ftp> cd dir2
250 Directory successfully changed.
ftp> pwd
257 "/dir1/dir2" is the current directory
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
421 Service not available, remote server has closed connection

助けてくれてありがとう。

答え1

10個を超えるファイル(例:クリスティアンモンド) これを追加すると

seccomp_sandbox=NO

到着/etc/vsftpd.conf

源泉アーチスウィキ

答え2

vsftp 3.0.3(pkg rel 3)がインストールされているArch Linuxでも同じ問題が発生しました。この問題を引き起こすディレクトリにファイルが多すぎます(2,666個)。ほとんどを削除した後、FTP経由のリストが再び機能し始めました。

変じゃないですか? 2,666個は多くないようです。しかし、私は本当に他のものを変えませんでした。 vsftp設定はまだ同じであり、ファイルシステムの権限は影響を受けません。また、ファイル名には奇妙な文字(最大21文字の連続した数字)は含まれていません。

関連情報