Настройте диапазон виртуальных имен пользователей с тем же паролем
Я был бы признателен, если бы кто-нибудь мог посоветовать мне, если возможна следующая конфигурация FTP. Мне нужен ряд пользователей только для чтения, которые следуют этой схеме:
(_[0-9]{15})
например, _012345678901234, который будет использовать тот же пароль, не создавая все возможные комбинации. Вариант использования следующий: мы предоставляем устройства, и они используют FTP для загрузки новой версии прошивки. В журнале я вижу имя пользователя и пароль, используемые для загрузки файлов. Основная цель - иметь серийный номер устройства в журнале.
Я не нашел способ указать шаблон для имени пользователя. В настоящее время у нас есть только анонимный доступ, но он явно недостаточно хорош.
1 ответ
В ProFTPD нет простого способа указать подстановочный знак для имени пользователя. Однако вы можете использовать mod_sql
аутентифицировать ваших пользователей и настраивать запросы, используемые для получения информации о пользователе.
Пример пользовательских запросов, взятых из документов ProFTPD:
SQLAuthenticate users groups usersetfast
SQLUserInfo custom:/get-user-by-name/get-user-by-id/get-user-names/get-all-users
SQLNamedQuery get-user-by-name SELECT "userid, passwd, uid, gid, homedir, shell FROM users WHERE userid = '%U'"
SQLNamedQuery get-user-by-id SELECT "userid, passwd, uid, gid, homedir, shell FROM users WHERE uid = %{0}"
SQLNamedQuery get-user-names SELECT "userid FROM users"
SQLNamedQuery get-all-users SELECT "userid, passwd, uid, gid, homedir, shell FROM users"
В твоем случае get-user-by-name
запрос может выглядеть примерно так:
SQLNamedQuery get-user-by-name SELECT "'%U', passwd, uid, gid, homedir, shell FROM users WHERE userid = SUBSTRING_INDEX('%U', '_', 1) AND SUBSTRING_INDEX('%U', '_', -1) RLIKE '_[0-9]{15}'"
Обратите внимание, что это не проверенное решение. Просто идея одного возможного пути, как это может быть достигнуто.