Podmanコンテナでpcsc_toolsを動かす
まえがき
- めちゃくちゃハマったので方法をメモしておく。
前提
- USB接続のsmartcardリーダー
- podman (dockerの場合は多分こんな苦労をしなくても動く)
理屈
- Smartcardリーダーはデバイスとして
/dev以下にわかりやすい名前でマップされない /dev/bus/usb以下にデバイスファイルとしてマップされる。(例:/dev/bus/usb/001/009)- デバイスファイルのパスは、USBの接続した場所等で変わる。
- デバイスファイルの権限は
crw-rw-r-- 1 root rootなのでrootユーザーしか書き込みができない。
how to
- デバイスファイルの権限を変更すれば良い。そのためには udevルールを書く必要がある
- udevルールは
nn-xxxxxxxxx.rulesというファイル名にする。nnは読み込み順、xxxxは任意 - udevルールは
/etc/udev/rules.d/に置く必要がある - 追加・更新後は、とりあえず
sudo udevadm control --reloadしておく。(自動的に反映されるらしい)
udevルールファイルの例
以下は、Gemaltのリーダーの場合の例。
以下の例では、カードリーダーを video グループのユーザーにも使えるようにしている。
1 | SUBSYSTEM=="usb", ATTRS{idVendor}=="08e6", ATTRS{idProduct}=="3437", GROUP="video", MODE="0660" |
idVendor, idProductは lsusb コマンドで調べることができる
例えば、以下の例だと、 idVendor=05fc idProduct=0231 である。
1 | Bus 003 Device 004: ID 05fc:0231 Harman JBL Pebbles |
確認
ls -l /dev/bus/usb
1 | /dev/bus/usb/001: |