我正在尝试使用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'"发布于 2013-01-12 17:29:11
问题是,%u指的是本地用户(在您的例子中是proftpd)。您应该使用%U (注意大写U),它指的是FTP用户。注意ProFTPd SQLUserInfo页面上的最后一段,上面的“也见”。
https://serverfault.com/questions/466471
复制相似问题