我正在尝试使用 ProFTPd 的 MySQL 配置来设置 FTP 登录到我的服务器。我有一个SQLNamedQuery
用于从数据库获取用户信息的程序(请参阅根据用户名设置 ProFTPd 的默认主目录),作为查询的一部分,我使用%u
变量插入用户名。当我尝试连接时,我总是登录不正确。检查 SQL 日志文件,似乎登录失败%u
是因为不是被通过 FTP 发送的用户名替换,而总是被替换proftpd
。我应该使用另一个变量吗?为什么不被%u
FTP 用户名替换?当我%u
用 MySQL 用户表中的用户名替换时,我可以连接。
这是我的配置:
<IfModule mod_sql.c>
SQLLogFile /var/log/proftpd/sql.log
SQLDefaultUID 2001
SQLDefaultGID 2001
SQLBackend mysql
SQLPasswordEngine on
SQLAuthTypes sha1
SQLConnectInfo *****@localhost ***** **********
SQLNamedQuery userinfo SELECT "uname, passwd, CONCAT('2001'), CONCAT('2001'), CONCAT('/var/projects/users/', uname) AS homedir FROM users WHERE uname='%u'"
SQLUserInfo custom:/userinfo
SQLGroupInfo ftpgroups groupname gid members
</IfModule>
下面是我的 SQL 日志文件中的相关行(请注意uname='proftpd'
末尾的部分):
query "SELECT uname, passwd, CONCAT('2001'), CONCAT('2001'), CONCAT('/var/projects/users/', uname) AS homedir FROM users WHERE uname='proftpd'"
答案1
问题是 指%u
的是本地用户(在您的情况下是proftpd
)。您应该使用%U
(请注意首都U),指的是 FTP 用户。请注意最后一段ProFTPd SQLUserInfo 页面,位于“另请参阅”上方。