発信者の名前に応じてNSSモジュールの応答を作成しています。たとえば、sshdがを呼び出すgetpwnam_r(...)
場合、pw_shell
は/ bin/bashになります。telnetdが呼び出す場合getpwnam_r(...)
、pw_shell
は/ bin/kshになります。
プロトタイプが作成され、動作します。ただし、nscdが実行されていてキャッシュがホットの場合、モジュールの関数は呼び出されません。nscdのキャッシュされた結果は、すべての呼び出し元に返されます。nscdは、結果に対する唯一の変数が時間であると想定しています。プロセス名が結果に影響を与えるとは考えていません。
nscdをオーバーライドするデーモンまたはモジュールを作成できるとすると、コードはプロセス名が私のリストにあるかどうかを確認する必要があります。リストにある場合は、nscdをスキップしてください。それ以外の場合は、nscdに回答させてgetpwnam_r(...)
ください。
出来ますか?
編集:あまり好ましくありませんが、OKの代替手段は、呼び出し時にnscdgetpwnam_r(...)
をバイパスすることです。