Armadilloフォーラム

コンテナ内でのUSBマウントについて

h-yuusuke

2022年3月14日 9時34分

お世話になっております。

製品マニュアルの「9.1.4.7. USB を扱う」において、USBメモリを挿した後でコンテナ起動(起動時にデバイスファイルを渡す)してコンテナ内でマウントする手順が記載されていますが、「コンテナ起動⇒USBメモリを挿入⇒コンテナ内でマウント」という風に行うことは可能でしょうか?
可能である場合、手順等を教えて頂きたいです。

コメント

at_dominique.m…

2022年3月14日 10時13分

h-yuusukeさん、

お世話になっています。アットマークテクノのマルティネです。

> 製品マニュアルの「9.1.4.7. USB を扱う」において、USBメモリを挿した後でコンテナ起動(起動時にデバイスファイルを渡す)してコンテナ内でマウントする手順が記載されていますが、「コンテナ起動⇒USBメモリを挿入⇒コンテナ内でマウント」という風に行うことは可能でしょうか?
> 可能である場合、手順等を教えて頂きたいです。

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
「9.1.4.7. USB を扱う」の最後の「 USB デバイスのホットプラグに対応する 」に書いてるように、
普通にpodmanを起動すると起動時のデバイスしかコンテナ内でアクセスできません。

ワークあちらにリストされたワークアラウンドでは、ただ/devをホストから共有することでホストのudevが新たなデバイスを作ってくれるのでそれが一番楽ですね。

今回はマウントしたいとのことであれば、そのコンテナにかなり大きいの権利を与える事になるので、/devを渡したところで特に何も変わりません。(CAP_SYS_ADMINがあれば、コンテナの脱出はたやすいです)

おすすめさせてもらえたら、複数のコンテナで対応した方が設計上でいいと思います:
* アプリケーションコンテナで制限を低くして、ただファイルを読み書きします。新しいマウントの知らせが必要であれば、unix socketから別のコンテナの連絡やただinotifyで管理可能です。
* マウントコンテナに大きいな制限を持って(--mount /dev+inotifyか--net=host + コンテナ内でudevを走らせる等)、アプリケーションコンテナと共有なディレクトリ[1]でマウントするだけです。

そうすることで、ユーザーの入力を扱うコンテナの制限が低くて、問題があっても何もできない状態になります。
この手順はよく聞かれると思いますので、4月上旬にブログにやり方を詳しく説明したいと思います。

[1] これは最近分かったことで、3月のアップデートで追加する予定ですが、「mount --make-rshared 」してから podman ボリュームに「:shared」のオプションをつくと外部のマウントも見れるようになります。
mount --make-rsharedは3月のアップデート以降自動的に行いますが今試したかったら手動で行ってください。

よろしくお願いします