vsftpd
を使用してFTPサーバーをセットアップし、匿名のアップロードとダウンロードを有効にしました。私が抱えている問題は、ディレクトリをアップロードすると正常にアップロードされることです(サーバーで確認できます)が、次にそのディレクトリを確認するとき、FTPクライアントは空のディレクトリを表示します。
ログインしているエラーはありません/var/log/vsftpd.log
。 pub
フォルダー(匿名ftpユーザーのホームフォルダー)にも書き込み権限があります。さまざまな構成オプションをテストしましたが、どれも役に立ちませんでした!
私が設定した最新の設定オプションは以下のとおりです:
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirlist_enable=YES
テストのためにファイアウォールを一度もオフにしましたが、何も変わりませんでした!
2つの提案:
FTPを実行するユーザーIDには、vsftpdが現在の作業ディレクトリとして使用する「ルート」ディレクトリに対する「書き込み」権限がありますか? vsftpdは書き込み可能な作業ディレクトリを望んでいません。
vsftpd.conf
ファイルにはhide_file
ディレクティブ。そのディレクティブで指定された正規表現によっては、匿名ユーザーがファイルを表示できない場合があります。
私は過去にvsftpdでこの問題を抱えていましたが、原因となったvsftpd.conf設定があることを思い出します。そのため、その構成ファイルをよく読んで、すべてのパラメーターとその値を理解してください。
指摘してくれたuser81029に感謝
Sudo setsebool -P allow_ftpd_full_access 1
sELinuxのmount --bind
フォルダーを/ var/ftp /に入れた後の空のftpディレクトリーの問題を解決します
私はVSFTPDをアクティブモードでのみ実行するように強制しましたが、それは私にとってはうまくいったようです。そのためには、設定ファイルに次の行を追加します。
pasv_enable=NO
しかし、最終的にはパッシブモードを有効にすることになったため、一部のアプリケーションでは要件であるように見えました。 VSFTPDはデフォルトではうまく機能しないようですので、明示的に設定を指定するのが最善です:
pasv_enable=YES
ファイアウォールを実行している場合は、正しいiptables設定を取得することも重要です。これは私の/etc/sysconfig/iptables
ファイル:
# FTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024:65535 -j ACCEPT
構成が正しく、ファイアウォールの問題ではない場合、SELinuxである可能性があります。私の場合、問題はあり、答えは次のとおりです。
setsebool -P allow_ftpd_full_access 1
man page から:
FTPサーバーがローカルユーザーにログインして、DACによって管理されるシステム上のすべてのファイルを読み書きできるようにする場合は、allow_ftpd_full_accessブール値をオンにする必要があります。
hide_file=NO
の追加を検討しましたか?
sELinuxが有効になっている場合、setenforce 0
コマンド?一時的に許可モードに入ることに注意してください。