回答:
システムの認証メカニズムをインポートする代わりに、pam_userdbを構成するか、簡単なカスタムPAMモジュールを自分で作成します。スタック内の唯一のモジュールとしてロードします。
auth requisite pam_userdb.so db=/etc/security/myapp.passwd.db
@include common-account
1つの(おそらく少し単純な)代替手段はpam_pwdfileを使用することです。基本的に、デフォルトの/etc/passwd
ファイルのようにフォーマットされたユーザー指定のファイルに対する認証を許可します。
pam_pwdfileは開発されていないようですが、おそらく機能するだけで、新しい機能は必要ありません。また、Debianアーカイブでも入手でき、セキュリティサポートを提供します(必要な場合)。
使用するには、(たとえばlibpam-pwdfile
Debianに)インストールし、pam configに次のような行を追加します:
auth required pam_pwdfile.so pwdfile=/path/to/passwd_file
詳細については、READMEを参照してください。
この/path/to/passwd
ファイルには、コロンで区切られたユーザー名とハッシュされたパスワードのリストが含まれている必要があります。各行に1人のユーザーがいます。ハッシュされたパスワードは、/etc/shadow
ファイルから取得するか、で生成できますmkpasswd
。たとえば、SHA-512ハッシュパスワードを取得するには:
$ mkpasswd -m SHA-512
サンプルpasswd
ファイルは次のようになります。これは、SHA-512と暗号化解除されたハッシュパスワードを示しています。
user1:$6$usgsi1RNu7wI$4rly97OA5ot5nsVSusW1jmwdjpHY7qbzGOX.E/TPfJqDuFnmMoCGVd1p1U/ew7e599QQLPnfkW0yLyuyaoAPl0
user2:NxR.0DdgI2Jnc
同様の代替pam-moduleはpam_fshadowですが、このモジュールはDebianによってパッケージ化されているようには見えないため、これ以上調査していません。
db_load -T -t hash myapp.passwd.db
。のdb
引数にpam_userdb.so
は.db
PAMによって暗黙的に追加されるため、接尾辞を付けないでください。