Я пытаюсь использовать конфигурацию MySQL ProFTPd для настройки входа по 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'"
Проблема в том, что %u
относится к локальному пользователю (который в вашем случае proftpd
). Вы должны использовать %U
(Обратите внимание капитал U), который относится к пользователю FTP. Обратите внимание на последний абзац на страница ProFTPd SQLUserInfo, выше "См. также".