配置具有相同密码的虚拟用户名范围

配置具有相同密码的虚拟用户名范围

如果有人能告诉我以下 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}'"

请注意,这不是一个经过测试的解决方案。这只是实现这一目标的一种可能方法的想法。

相关内容