-1

还有一个有趣的问题。我的公司最近切换到 ProFTP 来处理它的 FTP 和 SFTP 需求。我们主要运行 RHEL 5 服务器。我们的用户能够毫无问题地登录和传输文件(无论如何:-P)。

然而,我们的一位客户遇到了一个奇怪的问题,他们需要在执行文件传输操作后列出单个文件(在他们的 FTP 会话中)。他们可以使用 'ls' 列出整个目录,但是当使用确切的文件名(和/或通配符)这样做时,列出失败。

我能够使用 ncftp 在我的 Windows 工作站上复制该问题,但不能在我的 Linux 工作站上复制该问题。在为两个客户端打开调试并在服务器端启用完整的 FTP 命令日志记录后,我发现 Linux FTP 客户端使用 LIST 命令,而 ncftp 使用 MSLD 命令。

Linux客户端:

ftp> debug

Debugging on (debug=1).

ftp> ls file.txt

ftp: setsockopt (ignored): Permission denied

---> PASV

227 Entering passive mode (X.X.X.X).

---> LIST file.txt
150 Opening ASCII mode data connection for file list

-rw-r--r--   1 0        root      9318400 Aug 28 07:29 file.txt
226 Transfer complete

ncftp (Windows) 客户端:

ncftp / > debug

ncftp / > ls file.txt
> ls file.txt


Cmd: PASV

227: Entering passive mode (X.X.X.X).

Cmd: MLSD file.txt
550: 'file.txt is not a directory

List failed.

从我目前收集到的信息来看,MLSD 和 MLST 是传统 FTP LIST 命令的扩展版本。但是在列出单个文件时,客户端不应该向服务器发出 MLST 命令而不是 MLSD 命令吗?MLSD 应该用于列出我目前所读到的整个目录。

我还使用多个处于调试模式(包括 ncftp)的客户端连接到我们的旧 FTP 服务器(运行 VSFTP),并确认它们都使用旧的 LIST 命令进行所有操作,并且运行良好。这是因为它是在服务器端强制执行的,还是只是巧合,我不知道。

我还读到需要启用 mod_facts 才能使 MLSD/MLST 工作。我已经确认我的 proftpd 版本支持它,并且它已在服务器上启用:

[root@server ~]# proftpd -v

ProFTPD Version 1.3.5


From proftpd.conf:
# Adding support for extended FTP listing commands (e.g. MLST, MLSD, etc)

LoadModule mod_facts.c

<IfModule mod_facts.c>
        FactsAdvertise off
</IfModule>

我也尝试过切换和关闭 FactsAdvertise,重新加载服务,并且 ncftp 客户端仍然想要对单个文件进行 MLSD!

所以我的两个基本问题是:

  • 我怎样才能让 proftpd 与 MLSD/MLST 命令配合得很好,如果这太麻烦了。.
  • 我如何强制连接到 ProFTP 服务器的 FTP 客户端使用传统的 LIST 命令,就像我们旧的 FTP 服务 (VSFTP) 的情况一样。

提前致谢!

4

2 回答 2

0

还有其他报告称 ncftp(1) 没有正确实现 MLSD。具体来说,根据 RFC 规范,MLSD 命令应该只用于目录,而不是文件。其次,“FactsAdvertise off”告诉 mod_facts 在 FEAT 响应中不要包含“MLSD”;一致的客户端应该使用 FEAT 响应来确定服务器是否确实处理了 MLSD/MLST 命令。ncftp(1) 似乎忽略了 FEAT 对此的回应。

鉴于您的 mod_facts 模块是一个共享模块,那么您需要做的就是从您的 proftpd.conf 中省略“LoadModule mod_facts.c”模块。那么 proftpd 将不支持 MLSD/MLST,并且 ncftp(1) 将回退到使用 LIST。

希望这可以帮助!

于 2014-09-24T05:35:11.763 回答
0

对不起,我忘了我还有这个打开。我们在 ProFTPfourms 上找到了解决此问题的方法:

https://forums.proftpd.org/smf/index.php?topic=11604.0

于 2014-09-30T01:29:31.297 回答