以下のFTP設定が可能かどうかアドバイスしてくれる人がいれば幸いです。このパターンに従う読み取り専用ユーザーの範囲が必要です。
(_[0-9]{15})
例:可能なすべての組み合わせを作成せずに同じパスワードを使用する_012345678901234。ユースケースは次のとおりです。デバイスをプロビジョニングし、FTPを使用して新しいバージョンのファームウェアをダウンロードしています。ログには、ファイルのダウンロードに使用されたユーザー名とパスワードの両方が表示されます。主な目標は、ログにデバイスのシリアル番号を記録することです。
ユーザー名にワイルドカードを指定する方法が見つかりませんでした。現在、匿名アクセスのみが可能ですが、明らかに十分ではありません。
ProFTPDでは、ユーザー名にワイルドカードを指定する簡単な方法はありません。ただし、mod_sql
を使用してユーザーを認証し、ユーザー情報の取得に使用するクエリをカスタマイズできます。
ProFTPDから取得したカスタムクエリの例 docs :
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}'"
これはテスト済みのソリューションではないことに注意してください。これをどのように達成できるかについての1つの可能な方法の単なるアイデア。