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

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

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

Другие вопросы по тегам