ProFTPd:如何在列表中显示虚拟用户名?

我正在使用ProFTPd 1.3.5a(顺便说一下,我得到了一个旧的1.3.4d相同的行为)与一个相当普通的虚拟用户设置为Web服务器。

简而言之,ProFTPd使用apache的UID / GID运行,并具有用于身份validation的本地文件。 所有的用户都有相同的真正的UID / GID(再次,阿帕奇的),并在他们的目录,与DirFake *条目chrooted。

这是从configuration摘录:

AuthPAM off AuthOrder mod_auth_file.c AuthUserFile /etc/proftpd/ftpd.passwd AuthGroupFile /etc/proftpd/ftpd.group UseFtpUsers off DefaultRoot ~ DefaultChdir / DirFakeUser on ~ DirFakeGroup on ~ DirFakeMode 0644 ShowSymLinks off Umask 026 027 <Directory ~/> UserOwner www-data GroupOwner www-data </Directory> 

但是对于每一个ftp客户端我都会尝试,当列出文件时,我只能得到数字UID / GID而不是虚拟用户名。 这也令人讨厌,因为像Cyber​​Duck这样的客户端会认为数字ID与他们所连接的用户不一样,并且会显示所有文件/目录不可访问(即使试图访问它们实际上是可用的)。

编辑 :在服务器上有一个“真正的”用户www-data与UID 33和组www-data与GID 33,ProFTPd运行与该UID / GID,虚拟用户在/etc/proftpd/ftpd.[passwd|group]都有uid = gid = 33,用户目录下的所有文件都有uid = gid = 33。 现在,ftp客户端将所有文件列为uid 33和gid 33,并且无法将数字ID转换为用户/组名。 我不想在ftp客户端显示属于www-data文件,但属于他们用来validation的用户名。 这也是mod_lsDirFake*选项所做的,正如我所理解的那样:将假的用户/组扔到连接的客户端。 这是不是这样做,或者至less它是这样做的数字ID。

我如何让ProFTPd在客户端显示列表中的虚拟用户名?

一些FTP客户端现在使用较新的MLSD / MLST命令而不是LISTNLST来列出文件。 这些较新的命令没有名称的事实,只有ID。 因此,您可以尝试在您的proftpd.conf添加FactsAdvertise off ,告知ProFTPD不通告它可以处理这些较新的FTP命令。 这反过来又会导致FTP客户端回退到提供名称的旧FTP命令。

更新 :我已经要求向IANA注册两个新的操作系统特定事实UNIX.ownernameUNIX.groupname ,以便在MLSD列表中使用,以便能够使用该命令在列表中提供用户/组名。 我将很快将这些支持添加到ProFTPD。

希望这可以帮助!