Назад | Перейти на главную страницу

Настроить диапазон виртуальных имен пользователей с одинаковым паролем

Я был бы признателен, если бы кто-нибудь посоветовал мне, возможна ли следующая конфигурация FTP. Мне нужен ряд пользователей с доступом только для чтения, которые следуют этому шаблону:

(_[0-9]{15})

например, _012345678901234, который будет использовать один и тот же пароль без создания всех возможных комбинаций. Пример использования следующий - мы инициализируем устройства, и они используют FTP для загрузки новой версии прошивки. В журнале я вижу имя пользователя и пароль, используемые для загрузки файлов. Основная цель - занести серийный номер устройства в журнал.

Я не нашел способа указать подстановочный знак для имени пользователя. В настоящее время у нас есть только анонимный доступ, но этого явно недостаточно.

В 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}'"

Обратите внимание, что это не проверенное решение. Просто представление об одном из возможных способов достижения этого.