ProFTPd MySQL 查询 %u 解析为 proftpd,而不是用户名

ProFTPd MySQL 查询 %u 解析为 proftpd,而不是用户名

我正在尝试使用 ProFTPd 的 MySQL 配置来设置 FTP 登录到我的服务器。我有一个SQLNamedQuery用于从数据库获取用户信息的程序(请参阅根据用户名设置 ProFTPd 的默认主目录),作为查询的一部分,我使用%u变量插入用户名。当我尝试连接时,我总是登录不正确。检查 SQL 日志文件,似乎登录失败%u是因为不是被通过 FTP 发送的用户名替换,而总是被替换proftpd。我应该使用另一个变量吗?为什么不被%uFTP 用户名替换?当我%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 页面,位于“另请参阅”上方。

相关内容