在我的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
正如你所build议的那样,我在proftpd.conf中添加了这个,并且在debugging模式下启动了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>
这里是debugging日志:
- 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.xxx
根据文档你可以有多个AuthUserFile指令,如果你有他们在不同的VirtualHosts。 在我看来,你在做什么是不被支持的。
还有其他方法可以实现你正在尝试的:
AuthUserFile指定的文件。 这是由AuthOrderconfiguration的 你也可以考虑使用VirtualHosts,但是你必须知道它们是如何工作的 :
不幸的是,文件传输协议的定义目前不支持HTTP1.1支持的基于名称的虚拟主机。 所有FTP虚拟主机都基于唯一的IP地址/端口组合,而不是DNS名称。 ProFTPD的configuration文件语法与Apache的相似性有时会导致用户假设proftpd将以相同的方式处理这些问题 – 但稍后会介绍这一点。 底线是ProFTPD不支持基于名称的虚拟主机; 不是因为它们没有被实现,而仅仅是因为协议本身不支持它们。