Я был бы признателен, если бы кто-нибудь посоветовал мне, возможна ли следующая конфигурация 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}'"
Обратите внимание, что это не проверенное решение. Просто представление об одном из возможных способов достижения этого.