ログイン/ロック画面でUnix PAMモジュールが失敗する - 権限が拒否されました - 終了コード13

ログイン/ロック画面でUnix PAMモジュールが失敗する - 権限が拒否されました - 終了コード13

どのように動作しますか?

一人では解決できないもう一つの問題が生じて帰ってきました。基本的に私が持っているのは、Python PAMとNFCリーダーに基づく2段階認証(2FA)モジュールです。ユーザーにパスワードの入力を求められたら、2FAジェニティPINコードの入力を求めるダイアログボックスが表示され、ユーザーがパスワードを入力すると認証が成功します。

いつ壊れるの?

このソリューションは、ユーザーがログインしてファイルを保存し、パスワードの入力を求められた場合、または端末でパスワードを使用するときにsudo効果的です。このソリューションは、ユーザーがロックしたり(ロック画面を表示したり)、再起動後にログインする必要がある場合は機能しません。ジェニティダイアログボックス。

コード例:

  • /usr/share/pam-config/pprfid_pam.configこれは以下を含む私のPAM設定ファイルです。
    Name: 2FA PAMpy RFID Authorization
    Default: yes
    Priority: 192
    Auth-Type: Primary
    Auth:
        [success=end default=ignore]    pam_exec.so seteuid debug log=/var/log/pprfid.log /usr/local/bin/pprfid_pam.py
    Auth-Initial:
        [success=end default=ignore]    pam_exec.so seteuid debug log=/var/log/pprfid.log /usr/local/bin/pprfid_pam.py
  • /usr/local/bin/pprfid_pam.pyこれは、2段階認証プロセスの魔法を実行するPython PAMモジュールファイルです。これはジェニティコマンドを実行すると動作しません。
    # ...
    Popen("/usr/bin/zenity --forms --width=199 --height=100 --title '2FA' --text='Authorization' --add-password='PIN' --ok-label='Authorize' --cancel-label='Cancel' --separator=',' --display=:0.0", shell=True, stdout=PIPE )
    # ...

間違い!

上記のようにコンピュータがロックまたは再起動した後、ロック/ログイン画面からログインしようとすると、次のエラーが発生します/var/log/auth.log

    Jul 24 18:13:14 ubuntu unix_chkpwd[46760]: password check failed for user (testuser)
    Jul 24 18:13:14 ubuntu kcheckpass[46747]: pam_unix(kde:auth): authentication failure; logname= uid=1000 euid=1000 tty=:0 ruser= rhost=  user=testuser
    Jul 24 18:13:14 ubuntu kcheckpass[46761]: pam_exec(kde:auth): open of /var/log/pprfid.log failed: Permission denied
    Jul 24 18:13:14 ubuntu kcheckpass[46747]: pam_exec(kde:auth): /usr/local/bin/pprfid_pam.py failed: exit code 13

私はこの問題を解決しようとします。

  1. 明らかに私がした最初のことは、権限を確認し、次のように設定することでした。
    root@ubuntu:~# chown -R root:root /usr/local/bin/pprfid_pam.py
    root@ubuntu:~# chown -R root:root /var/log/pprfid.log
    root@ubuntu:~# chmod 0755 /usr/local/bin/pprfid_pam.py
    root@ubuntu:~# chmod 0755 /var/log/pprfid.log
  1. DISPLAY設定が正しいことをもう一度確認しました:0.0

質問! ?

私は何が間違っていましたか? PAMモジュールの開発が本当に初めてなのですが、GUIをrootとして実行してみると、権限が拒否されたのですが、無駄に撃つ意向はないようです。助けてください。 !

よろしくお願いします。 @リチャーディフ

アップデート#1

関連記事とコメントを読んで別のフォーラムで議論をしてみると、ここで問題が発生しているようです。ジェニティあるいは、PAMモジュール自体をGUIとして実行することはできません。これを行うには、ディスプレイマネージャを介して統合する必要があります。私の場合SDDM/etc/pam.d/*強制的に実行できることを確認するために、設定ファイルでいくつかのシナリオをテストします。

アップデート#2

/usr/share/pam-config/pprfid_pam.configすべての認証ポイントを扱っていますが..ジェニティ(ログイン/ロック画面で)外部セッションは表示されないため、このモジュールを統合する必要があるようです。SDDM直接GUI:思考:。

行き届いた路地/解決策(一種の)

少し破棄した後、私は/usr/share/pam-config/pprfid_pam.configカバーを取り除きcommon-auth、単に許可することにしました。ポリアクリルアミドログイン後にユーザーセッションで実行されるモジュール。Pythonスクリプトを実行する別の方法を見つける必要があります。SDDMディスプレイマネージャ。

100%確信できないけどポリアクリルアミドディスプレイマネージャとのクロスリンクサポート(SDDM私の場合は)不可能だという記事をたくさん読んだ。だから投稿を減らしています。ポリアクリルアミドモジュールの適用範囲。

関連情報