pamルールを明確にするには、 `success = 3`を使用してください。

pamルールを明確にするには、 `success = 3`を使用してください。

pam_ssh_agent_auth.soSSH pubkeyを介して認証するときにsudoを使用する一部のユーザーにパスワードのない環境を提供するように設定しようとしています。

私は見始めたGentoo Wiki、使用することをお勧めします

...
auth [success=3 default=ignore] pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys
auth    include     system-auth                 <- 1st skipped
account include     system-auth                 <- 2nd skippedm
session include     system-auth                 <- 3rd skipped
...                                             <- should continue from here

私はFedoraを着用していますが、/etc/pam.d/sudo次のようになります。

auth     [success=3 default=ignore] pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys
auth     include     system-auth
account  include     system-auth
password include     system-auth
session  optional    pam_keyinit.so revoke
session  required    pam_limits.so
session  include     system-auth

私はPAMの専門家ではありませんが、マニュアルページを見ると、success=3「このルールが成功すると次の3行をスキップします」と解釈します。そのため、ユーザーが正しくログインし、プロキシがあればパスワードを取得することを期待しています。聞かないでください。

ああ、これはうまくいきません。とにかくパスワードの入力を求められます。

[success=3 default=ignore]usingを使用せずに単に使用すると、基本的に同じだと思われ、認証は期待どおりに機能します。sufficientこの場合、モジュールスタックは次の3つのモジュールで構成されているため、違いは見られません。

明らかに使用[success=3 default=ignore]し、sufficient同じ結果が得られないのと同じではありません。

誰かが実際の違いが何であるか、この場合電子が機能しない理由を説明できますか?

ありがとう

答え1

まず、includeその行はPAMモジュールではありません。計算ではなく

auth     include     system-auth

スキップしたエントリとして、PAMライブラリはauth includeこの行をauthに置き換えます/etc/pam.d/system-auth。したがって、スキップされた3行を確認するには、[success=3 default=ignore]まずincludeそのステートメントをファイルの適切な内容に置き換えてから、system-authスキップされた行数を数える必要があります。 。

[success=3 default=ignore]第二に、モジュールタイプ全体で動作しないと思います。

ユーザーを認証すると、アプリケーションは最初の呼び出しを実行しますがpam_authenticate()、その間にPAMライブラリはauthそのタイプの項目のみを処理します。ユーザーが正常に認証されると、アプリケーションはそのタイプの項目のみを処理するpam_acct_mgmt()ものを呼び出すことができます。account完了すると、pam_open_session()そのタイプの項目のみが処理されますsession

認証パス、アカウント管理パス、セッション設定パスは異なる操作なので、auth [success=3 default=ignore]次の3行だけをスキップすることができると思いました。authタイプのみ。あなたの場合、スキップされた行は/etc/pam.d/system-authファイルの内側にあります。


を使用すると、行にリストされているモジュールが認証の成功を報告すると、行の処理がすぐに停止されることauth sufficientを意味します。つまり、ファイルの行数に関係なく、すべての行をスキップします。authauth sufficientauthsystem-auth

を使用しauth [success=3 default=ignore]auth次の行に行がある場合は、含まれているincludeファイルも調べて、何が起こるのかを正確に理解する必要があります。これを行うときにまだパスワードを要求するという事実は、ファイルにauth3行以上があることを明らかに示していますsystem-auth

答え2

マニュアルページから:

      sufficient
           if such a module succeeds and no prior required module has failed the PAM
           framework returns success to the application or to the superior PAM stack
           immediately without calling any further modules in the stack. A failure of a
           sufficient module is ignored and processing of the PAM module stack
           continues unaffected.

あなたの場合は、「認証キー」ファイルを確認するとすぐに成功を返します。

Fedoraの例では、「認証キー」ファイルを正常に確認すると、次の2つの手順をスキップし、pam_limits.soがsudoユーザーが使用できるリソース数の制限を設定するなど、いくつかのセッション検証を実行します。

関連情報