非ルートとして OpenPGP カードを読み取ることができませんか?

非ルートとして OpenPGP カードを読み取ることができませんか?

同じOpenPGPカードとリーダーの設定はUbuntu 11.04 Nattyでは正常に動作していました。クリーンインストールでOceletにアップグレードした後、基本的に同じ問題が発生しました。男がここについて投稿しました。

カード読み取り操作をまとめると、

gpg --card-status

現在は sudo コマンドのみで動作します。

答え1

この問題に関するさらに興味深いトラブルシューティング情報を入手しました。別のシステムに Ubuntu 10.04.3 LTS をインストールし、OpenPGP スマートカード設定を構成しました。非ルート ユーザー アカウントでは正常に動作しています。当然、USB デバイスの権限を確認したいと思いました。

通常のアカウントで、最初に を実行してgpg --card-editUSB カード リーダー デバイスを接続し、次に を実行してsudo lsof -c gpg | grep usbデバイス ファイルを探しました。何も得られなかったため、 を実行してsudo gpg --card-editエラー メッセージが表示されました。

seth@swk:~$ sudo gpg --card-edit
[sudo] password for seth: 
gpg: WARNING: unsafe ownership on configuration file `/home/seth/.gnupg/gpg.conf'

gpg: detected reader `SCM SCR 3310 00 00'
gpg: pcsc_connect failed: sharing violation (0x8010000b)
gpg: apdu_send_simple(0) failed: locking failed
Please insert the card and hit return or enter 'c' to cancel: c
gpg: selecting openpgp failed: general error
gpg: OpenPGP card not available: general error

USB カード リーダーを占有している別の何かがありました。何が原因か調べてみましょう。

sudo lsof | grep usb

これにより、私が探していたナゲットが得られました。

pcscd     2362       root    5u      CHR              189,4      0t0       2194 /dev/bus/usb/001/005

したがって、pcscd サービスは、非ルート ユーザーに代わってカード リーダー デバイスを取得し、適切に構成された OpenPGP セットアップ上のカードに gpg 読み取り/書き込み要求を中継するようです。

デバイスファイルの権限を見てみましょう。

seth@swk:~$ ls -l /dev/bus/usb/001/005
crw-rw-r-- 1 root root 189, 4 2011-10-18 11:49 /dev/bus/usb/001/005

わかりました。これで、解決に近づいていると思います。11.10 システムでは、グループが root ではなく pcscd に設定されていたことを覚えています。問題は pcscd パッケージにあるようです。同じ権限で 11.10 システムを構成して、結果を報告します。

更新: そこで、新規インストールした 11.10 Ocelot の USB デバイスのユーザーおよびグループの権限を root および root に設定しました。このコマンドは、gpg --card-status非 root ユーザーとしてはまだ失敗します。今のところ、これは pcscd パッケージのバグだと思います。

答え2

Ubuntu 16.04 の Yubikey Neo でも同様の問題が発生しました。再起動後、次のコマンドを実行して修正できました。

ykpersonalize -m 82

Yubikey には、これが何をするかについてのドキュメントがたくさんあります。カードをこのモードに戻す必要があった理由や、モードを変更する可能性があるものがわかりません。なぜ機能したのかさえわかりません。これが機能した理由を知っている方がいれば、詳細を追加して回答を更新したいと思います。

関連情報