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

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

我正在使用 ProFTPd 1.3.5a(顺便说一下,在旧版本 1.3.4d 上我也遇到了同样的问题)并且为 Web 服务器设置了一个非常常见的虚拟用户。

简单来说,ProFTPd 使用 apache 的 UID/GID 运行,并有本地文件用于身份验证。所有用户都有相同的真实 UID/GID(同样是 apache 的 UID/GID),并在其目录中使用 DirFake* 条目进行 chroot。

这是配置的摘录:

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 转换为用户/组名。我不想www-data在 ftp 客户端中显示文件属于哪个用户,而是属于他们用于验证的用户名。据我了解,这也是选项mod_ls的作用DirFake*:向连接的客户端抛出虚假的用户/组。它没有这样做,或者至少它只是针对数字 ID 这样做。

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

答案1

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

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

希望这可以帮助!

相关内容