如果有人能告诉我,如果下面的FTPconfiguration是可能的,我将不胜感激。 我需要遵循这种模式的只读用户范围:
(_[0-9]{15})
例如,_012345678901234将使用相同的密码,而不创build所有可能的组合。 用例如下 – 我们调配设备,他们使用FTP下载新版本的固件。 在日志中,我可以看到用于下载文件的用户名和密码。 主要目标是在日志中包含设备序列号。
我没有find一种方法来指定用户名的通配符。 目前我们只有匿名访问,但显然不够好。
在ProFTPD中,没有直接的方法来为用户名指定通配符。 但是,您可以使用mod_sql来validation您的用户并自定义用于获取用户信息的查询。
从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}'"
请注意,这不是一个经过testing的解决scheme。 只是想一个可能的方式如何实现这一点。