我有一台运行 VSFTPD 的 CentOS 服务器,因此我可以将文件上传到我的站点。
当我连接到 FTP 时,它会列出根目录中的文件夹,我可以打开除名为“public”的文件夹之外的所有文件夹,这只会导致 FileZilla 挂起“150 目录列表来了”。
朋友可以连接到服务器并访问文件夹就好了。
此外,当我访问我提到的其他一些文件夹时,当我尝试下载其中的文件时,它只是在传输时挂起。
我在 vsftpd.conf 中设置了被动模式并打开了如下端口:
pasv_enable=Yes
pasv_max_port=12100
pasv_min_port=12000
pasv_address=<IP ADDRESS>
Run Code Online (Sandbox Code Playgroud)
IP表:
-I INPUT -p tcp --destination-port 12000:12100 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我可以连接到其他 FTP 服务器并传输文件就好了,但是我自己的服务器似乎有问题。我还通过多个 FTP 帐户对其进行了测试。
确保您还加载了“ip_conntrack_ftp”内核模块,它将跟踪实际数据传输所需的相关连接。作为 root(或使用 sudo),运行这个:
modprobe ip_conntrack_ftp
Run Code Online (Sandbox Code Playgroud)
还要确保 SELinux(如果已启用)不会阻止您的请求,请确保使用公共上下文,例如 user_home_dir_t(您的 homedir 的默认上下文)默认不会与 FTP 服务器一起使用,除非您这样做:
setsebool -P ftp_home_dir 1
Run Code Online (Sandbox Code Playgroud)
还有一些其他与 ftp 相关的 SELinux 标志,在某些情况下可能会干扰。运行getsebool -a|grep ftp以查看它们并在文档中查找它们以获取详细说明。