Linux-PAMはカスタムPAMモジュールを使用できません。複数のアーキテクチャ関連である可能性があります。

Linux-PAMはカスタムPAMモジュールを使用できません。複数のアーキテクチャ関連である可能性があります。

私はpamtesterとオンラインで見つけた別のpamテストコードを使って期待どおりに機能するシンプルなカスタムPAMモジュールを構築しました。

また、pinvokeを使用してpamを認証する単純なdotnetコアアプリケーションを構築しました。

前述のように、カスタムモジュールはpamtesterで動作し、カスタムdotnetアプリケーションはデフォルトのubuntu 15.10 pam設定(convコールバックが受信されるまで)に対して動作します。

ただし、カスタムアプリケーションをカスタムPAMモジュールに接続すると、auth.logにエラーメッセージが表示されます。

dotnet: PAM unable to dlopen(pam_permit_log_response.so): 
/lib/security/pam_permit_log_response.so: cannot open shared object file: No    
such file or directory

...だからdotnetからカスタムモジュールとしてpamを呼び出すと、/lib/x86_64-linux-gnu/securityにモジュールが見つかりません。

モジュールのフルパスを含むようにpam設定ファイルを変更すると、エラーが発生します。

dotnet: PAM unable to dlopen(/lib/x86_64-linux-
gnu/security/pam_permit_log_response.so): /lib/x86_64-linux-
gnu/security/pam_permit_log_response.so: undefined symbol: pam_syslog

したがって、まだ問題が解決しないようです。今回はカスタムpamモジュールの参照です。

誰でも私に正しい方向を教えてもらえますか?

  • PAMが私のカスタムモジュールを見つけることができませんが、デフォルトのUbuntuモジュールが見つかるのはなぜですか?
  • dotnetでpamを呼び出すときにのみこれが発生するのはなぜですか?
  • 既存のシステムモジュールのように動作するようにカスタムpamモジュールを構築および/または構成するにはどうすればよいですか?

答え1

私はまだpamtesterではなくdotnetからカスタムモジュールを呼び出すのに問題がある理由がわかりません。しかし、最も重要な質問である「既存のモジュールと同じように動作するようにカスタムpamモジュールを構築および/または構成するにはどうすればよいですか?」に答えます。システムモジュール?」

答えは、以前に以下を使用してモジュールを接続したことです。

ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o

この問題を解決するには、-lpamフラグを使用してこれがpamモジュールであることをリンカーに示す必要があります。したがって、link呼び出しは次のようになります。

ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o -lpam

関連情報