首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ProFTPd MySQL查询%u解析为proftpd,而不是用户名

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

Server Fault用户
提问于 2013-01-12 16:54:10
回答 1查看 887关注 0票数 3

我正在尝试使用ProFTPd的MySQL配置来设置到我的服务器的FTP登录。我有一个SQLNamedQuery,用于从数据库获取用户信息(参见根据用户名设置带有默认主目录的ProFTPd),作为查询的一部分,我使用%u变量插入用户名。当我试图连接时,我总是得到不正确的登录。通过检查SQL文件,登录似乎失败了,因为%u没有被通过FTP发送的用户名所取代,而是始终被proftpd所取代。我还应该用另一个变量吗?为什么%u不被FTP用户名所取代?当我将%u替换为MySQL用户表中的用户名时,我可以连接。

这是我的配置:

代码语言:javascript
复制
<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'位):

代码语言:javascript
复制
query "SELECT uname, passwd, CONCAT('2001'), CONCAT('2001'), CONCAT('/var/projects/users/', uname) AS homedir FROM users WHERE uname='proftpd'"
EN

回答 1

Server Fault用户

发布于 2013-01-12 17:29:11

问题是,%u指的是本地用户(在您的例子中是proftpd)。您应该使用%U (注意大写U),它指的是FTP用户。注意ProFTPd SQLUserInfo页面上的最后一段,上面的“也见”。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/466471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档