5.2. PC/SC および polkit に関連する問題のトラブルシューティング
pcsc-lite
パッケージをインストールし、pcscd
デーモンを起動した後に自動的に強制される Polkit ポリシーは、ユーザーがスマートカードと直接対話しない場合でも、ユーザーのセッションで認証を求められることがあります。GNOME では、以下のエラーメッセージが表示されます。
Authentication is required to access the PC/SC daemon
opensc
などのスマートカードに関連する他のパッケージをインストールする場合は、システムが依存関係として pcsc-lite
パッケージをインストールできることに注意してください。
スマートカードとの相互作用が必要なく、PC/SC デーモンの認可要求が表示されないようにする場合は、pcsc-lite
パッケージを削除できます。必要なパッケージを最小限にとどめることが、セキュリティー上の推奨事項です。
スマートカードを使用する場合は、/usr/share/polkit-1/actions/org.debian.pcsc-lite.policy
時に、システムが提供するポリシーファイルのルールを確認して、トラブルシューティングを開始します。カスタムルールファイルは、/etc/polkit-1/rules.d/
ディレクトリーのポリシー (03-allow-pcscd.rules
など) に追加できます。ルールファイルは JavaScript 構文を使用し、ポリシーファイルは XML 形式であることに注意してください。
システムに表示される認可要求を理解するには、以下の例のように Journal ログを確認します。
$ journalctl -b | grep pcsc
...
Process 3087 (user: 1001) is NOT authorized for action: access_pcsc
...
以前のログエントリーは、ユーザーがポリシーによるアクションを実行する権限を持っていないことを示しています。この拒否を解決するには、対応するルールを /etc/polkit-1/rules.d/
に追加します。
polkitd
ユニットに関連するログエントリーも検索できます。以下に例を示します。
$ journalctl -u polkit
...
polkitd[NNN]: Error compiling script /etc/polkit-1/rules.d/00-debug-pcscd.rules
...
polkitd[NNN]: Operator of unix-session:c2 FAILED to authenticate to gain authorization for action org.debian.pcsc-lite.access_pcsc for unix-process:4800:14441 [/usr/libexec/gsd-smartcard] (owned by unix-user:group)
...
この出力では、最初のエントリーがルールファイルに構文エラーが含まれていることを示しています。2 番目のエントリーは、ユーザーが pcscd
へのアクセスを取得できなかったことを示しています。
また、短いスクリプトを使用して、PC/SC プロトコルを使用するすべてのアプリケーションをリスト表示することもできます。pcsc-apps.sh
などの実行ファイルを作成し、以下のコードを挿入します。
#!/bin/bash cd /proc for p in [0-9]* do if grep libpcsclite.so.1.0.0 $p/maps &> /dev/null then echo -n "process: " cat $p/cmdline echo " ($p)" fi done
root
でスクリプトを実行します。
# ./pcsc-apps.sh
process: /usr/libexec/gsd-smartcard (3048)
enable-sync --auto-ssl-client-auth --enable-crashpad (4828)
...
関連情報
-
man ページの
journalctl
、polkit(8)
、polkitd(8)
、およびpcscd(8)