如何在 proftpd.conf 中拥有多个 AuthUserFile 指令

如何在 proftpd.conf 中拥有多个 AuthUserFile 指令

在我的 CentOS 中,CPanel 安装在 proftpd.conf 中,我可以看到指令

AuthUserFile /etc/proftpd/passwd.vhosts

我想添加一个AuthUserFile指令,因此 Profptd 使用另一个文件来查找用户,/etc/proftpd/passwd.vhosts 因此我在下面添加了一行AuthUserFile

AuthUserFile /home/public_html/cgi-bin/ftp/ftp.users

但似乎它没有使用我的新 AuthUserFile 指令

有人能帮助我如何让 Proftpd 查看除此文件之外的其他文件吗/etc/proftpd/passwd.vhosts


正如您所建议的,我在 proftpd.conf 中添加了它,并在调试模式下启动了 Proftpd 守护程序,但它仍然没有使用此文件。

<VirtualHost www8.example.com>
  ServerName                    "www8.example.com's FTP Server"

  MaxClients                    40
  MaxLoginAttempts              3


  DeferWelcome                  on

  AuthUserFile /home/xxx/public_html/cgi-bin/ftp/ftp.users

</VirtualHost>

这是调试日志:

- dispatching CMD command 'AUTH TLS' to mod_tls
 - dispatching LOG_CMD command 'AUTH TLS' to mod_log
 - dispatching PRE_CMD command 'USER testuser' to mod_tls
 - dispatching PRE_CMD command 'USER testuser' to mod_core
 - dispatching PRE_CMD command 'USER testuser' to mod_delay
 - dispatching PRE_CMD command 'USER testuser' to mod_auth
 - dispatching CMD command 'USER testuser' to mod_auth
 - dispatching POST_CMD command 'USER testuser' to mod_delay
 - dispatching LOG_CMD command 'USER testuser' to mod_log
 - dispatching PRE_CMD command 'PASS (hidden)' to mod_tls
 - dispatching PRE_CMD command 'PASS (hidden)' to mod_core
 - dispatching PRE_CMD command 'PASS (hidden)' to mod_wrap
 - dispatching PRE_CMD command 'PASS (hidden)' to mod_delay
 - dispatching PRE_CMD command 'PASS (hidden)' to mod_auth
 - dispatching CMD command 'PASS (hidden)' to mod_auth
 - mod_auth_file/0.9: using passwd file '/etc/proftpd/passwd.vhosts'
 - USER testuser: no such user found from 117.x.x.x

答案1

根据文档如果在不同的 VirtualHosts 中拥有多个 -directive ,则可以拥有多个AuthUserFile-directive。在我看来,你所做的似乎不受支持。

还有其他方法可以实现您想要的目标:

  • 合并两个文件(例如手动或通过 cron 自动合并)
  • 对 proftpd 使用另一种身份验证方法
    • 看到他们的常问问题以获取完整列表。
    • proftpd 默认使用系统用户以及 中指定的文件AuthUserFile。这是通过AuthOrder

您也可以考虑使用 VirtualHosts,但您必须注意它们是如何工作的

不幸的是,文件传输协议的定义(目前)不支持基于名称的虚拟主机,而 HTTP1.1 支持。所有 FTP 虚拟主机都基于唯一的 IP 地址/端口组合,而不是 DNS 名称。ProFTPD 的配置文件语法与 Apache 的相似性有时会导致用户认为 proftpd 将以相同的方式处理这些 — — 但稍后会详细介绍。最重要的是 ProFTPD 不支持基于名称的虚拟主机;不是因为它们没有实现,而只是因为协议本身不支持它们。

相关内容