I am trying to use ProFTPd's MySQL configuration to set up FTP login to my server. I have a SQLNamedQuery
that is used to get the user info from the database (see Setting up ProFTPd with default home directory based on username), and as part of the query I use the %u
variable to insert the username. When I try to connect, I always get login incorrect. Checking the SQL log file, it seems that the login fails because %u
is not being replaced by the username sent via FTP, but rather always by proftpd
. Is there another variable I'm supposed to use? Why isn't %u
being replaced by the FTP username? When I replace %u
with a username that's in the MySQL user table, I can connect.
Here is my config:
<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>
And here is the relevant line in my SQL log file (notice the uname='proftpd'
bit at the end):
query "SELECT uname, passwd, CONCAT('2001'), CONCAT('2001'), CONCAT('/var/projects/users/', uname) AS homedir FROM users WHERE uname='proftpd'"