连接CentOS 7 VSFTPD时未列出目录内容

连接CentOS 7 VSFTPD时未列出目录内容

操作系统:CentOS 7,带有 VSFTPD,防火墙暂时关闭

客户:Filezilla

VSFTPD 配置设置:

用过的[root@Turbo ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to the DataMover FTP service.
chroot_local_user=YES
local_root=/home/ftp-docs
listen=YES
listen_ipv6=NO
pasv_enable=YES
pasv_max_port=65534
pasv_min_port=1024
pasv_address=192.168.20.88
hide_file=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

FileZilla 设置:

Logon Type          Normal
Port                21
Server Type         Default (tried UNIX)
Transfer Mode       Passive (tried Active)
Charset             Auto detect
Encryption          Only use plain FTP (insecure)

我尝试了传输模式和服务器类型(UNIX 和自动检测之间)的所有组合,但均无济于事。我使用普通 FTP,因为我没有将 TLS 添加到我的 CentOS 计算机。我有一段时间有这个协议,因为我没有它,我只是浪费时间协商到普通的 FTP。

这是 Filezilla 的输出:

Status: Disconnected from server
Status: Connecting to 192.168.20.88:21...
Status: Connection established, waiting for welcome message...
Status: Connected
Status: Retrieving directory listing...
Status: Directory listing of "/" successful

有趣的是我没有看到欢迎横幅。我一半期望看到这一点,因为 Filezilla 日志显示“正在等待欢迎消息......”。

与欢迎消息一样,该目录的内容是空白的。

用户没问题。我以用户身份登录并执行了操作cd ~,并能够验证我是否访问了该/home/ftp-docs目录。

日志文件显示主要内容为空。

/var/log/消息:

Dec 11 09:23:35 Turbo systemd: Reloading.
Dec 11 09:23:35 Turbo systemd: [/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 'RemoveOnStop' in section 'Socket'
Dec 11 09:23:35 Turbo systemd: [/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 'RemoveOnStop' in section 'Socket'
Dec 11 09:23:36 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:37 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:37 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:40 Turbo systemd: Stopping Vsftpd ftp daemon...
Dec 11 09:23:40 Turbo systemd: Stopped Vsftpd ftp daemon.
Dec 11 09:23:45 Turbo systemd: Starting Vsftpd ftp daemon...
Dec 11 09:23:45 Turbo systemd: Started Vsftpd ftp daemon.

经过我今天的所有测试,/var/log/xferlog 显示为空。

Tue Dec  8 15:48:35 2015 1 ::ffff:192.168.20.74 0 /CreativeCloudSet-Up.exe b _ i r datamover ftp 0 * i
~                                                                                                                                                                                                   

我在服务器上的命令行也很好。

[root@Turbo ~]# systemctl daemon-reload
[root@Turbo ~]# systemctl stop vsftpd
[root@Turbo ~]# systemctl start vsftpd
[root@Turbo ~]# vi /var/log/messages
[root@Turbo ~]# vi /var/log/xferlog 
[root@Turbo ~]# 

为了完整起见,主目录的内容很好。

[root@Turbo ~]# ls -l /home
total 4
drwxr-xr-x.  3 root ftp-users   35 Dec  9 16:29 ftp-docs
...
[root@Turbo ~]# 
[root@Turbo ~]# cd /home/ftp-docs/
[root@Turbo ftp-docs]# ls -l
total 4
-rwxr--r--. 1 datamover root 13 Dec  8 15:47 smurfit.txt
drwxr--r--. 2 root      root  6 Dec  9 16:29 sub1
[root@Turbo ftp-docs]# 

我仔细阅读了相当多的网页,这就是我hide_file在配置文件中添加四个被动条目的原因vsftpd.conf。其他人连接时遇到问题。那是而且不是我的问题。我连接得很好。我只是什么也没看到。

虽然我目前已禁用防火墙,但这是我的iptables设置:

vi /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

我确实读到 CentOS 7 使用 FirewallD,而不是 iptables,但正如你所看到的:

[root@Turbo ~]# firewall-cmd --get-active-zones
FirewallD is not running
[root@Turbo ~]# 

以下是我仔细阅读的一些资源:

对我错过的任何事情有什么想法吗?

答案1

这个问题的解决方案非常非常不明显。当我知道正确的搜索词时(现在很明显,但在过去的几天里不是这样),并且更好地理解事物,这些片段开始就位。许多关于“VSFTPD 目录内容未列出”的帖子无休止地谈论被动与主动、端口、权限、hide_file、local_root 的使用等。

当我问自己必须有一种方法来获取详细日志记录时,我真正顿悟了,或者“vsftpd 详细日志记录”是我的关键词。可以这么说,这一想法及其实施打击了母亲的负担。我知道了 SELinux 的存在。这在一定程度上造成了我的痛苦。

本文,在 CentOS 中安装和配置 VSFTPD,支持 FTPS 和 SELinux,为解决我的问题做了很多工作。

这些说明创建了几个文件 mypol.*,我将其删除。这让我可以访问 smurfs.txt,但 sub1 仍然存在问题。

我通过注意到 sub1 的所有者是 root,而不是 datamover(为什么花了这么长时间?)解决了这个问题。当我固定所有权(好吧,权限)时,我也可以访问该文件夹。

我刚刚尝试下载这两个文件并成功。

我仍然无法上传,/home/ftp-docs/并且必须保持 root 作为该文件夹的所有者以及 755 权限。任何偏差都会导致 FTP 停止工作。不过,我可以上传到 sub1。因此,解决方案(解决方法?)就是简单地上传到子文件夹。

为了让事情正常工作,我必须在最后执行以下操作,其中 /mnt/raid1 是本例中 FTP 客户端的主目录。 (我曾经使用/home/ftp-docs/。)

# /sbin/restorecon -v /mnt/raid1
# setsebool -P ftpd_full_access 1

我使用的有用链接:

相关内容