同じOpenPGPカードとリーダーの設定はUbuntu 11.04 Nattyでは正常に動作していました。クリーンインストールでOceletにアップグレードした後、基本的に同じ問題が発生しました。男がここについて投稿しました。
カード読み取り操作をまとめると、
gpg --card-status
現在は sudo コマンドのみで動作します。
答え1
この問題に関するさらに興味深いトラブルシューティング情報を入手しました。別のシステムに Ubuntu 10.04.3 LTS をインストールし、OpenPGP スマートカード設定を構成しました。非ルート ユーザー アカウントでは正常に動作しています。当然、USB デバイスの権限を確認したいと思いました。
通常のアカウントで、最初に を実行してgpg --card-edit
USB カード リーダー デバイスを接続し、次に を実行して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 には、これが何をするかについてのドキュメントがたくさんあります。カードをこのモードに戻す必要があった理由や、モードを変更する可能性があるものがわかりません。なぜ機能したのかさえわかりません。これが機能した理由を知っている方がいれば、詳細を追加して回答を更新したいと思います。