
/etc/pam.dに複数のファイルがあります。ディストリビューションごとに名前が少し違うと思います。そして、プロセス名と設定(例:chpasswdとpasswd)の間に直接的な関連付けはありません。
どのアプリケーションがどのpamファイルを使用しているのかどこかに定義されていますか?
答え1
長い話を短く:ルールはありません。代わりに、アプリケーション開発者の実装によって異なります。
長いバージョン:
プログラムがPAMを使用して認証するときは、以下を呼び出す必要があります。pam_start()
:
int pam_start(const char *service_name, const char *user, const struct pam_conv *pam_conversation, pam_handle_t **pamh);
最初のパラメーターservice_name
は、構成を選択するために使用されるパラメーターです。
たとえば、OpenSSHサーバーはpam_start()
ソースファイルから次を呼び出しますauth_pam.c
。
sshpam_err =
pam_start(SSHD_PAM_SERVICE, user, &store_conv, &sshpam_handle);
定数は SSH_PAM_SERVICE
(同じファイルで)次のように定義されます。
#if !defined(SSHD_PAM_SERVICE)
extern char *__progname;
# define SSHD_PAM_SERVICE __progname
#endif
また、の値は次__progname
のように定義されますssh.c
。
__progname = ssh_get_progname(av[0]);
ご存知のように、av[0]
Cはバイナリファイルの名前です。したがって、OpenSSHデーモンバイナリの名前がある場合は、sshd
次pam_start()
のようにsshd
なりますservice_name
。
(私はこのssh_get_progname()
電話を無視したことに注意してください。しかし、私の答えにはまだ十分だと思います。)