在我的 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 使用另一种身份验证方法
您也可以考虑使用 VirtualHosts,但您必须注意它们是如何工作的:
不幸的是,文件传输协议的定义(目前)不支持基于名称的虚拟主机,而 HTTP1.1 支持。所有 FTP 虚拟主机都基于唯一的 IP 地址/端口组合,而不是 DNS 名称。ProFTPD 的配置文件语法与 Apache 的相似性有时会导致用户认为 proftpd 将以相同的方式处理这些 — — 但稍后会详细介绍。最重要的是 ProFTPD 不支持基于名称的虚拟主机;不是因为它们没有实现,而只是因为协议本身不支持它们。