Open3

Snap パッケージのデバッグについて

nokutenokute

使用するコマンド

  • snapcraft
    • パッケージの生成や設定ファイルの生成など
  • snap
    • パッケージのインストール

パッケージ設定

snapcraft.yaml というファイルに記載する。
snapcraft init により、カレントディレクトリにsnapというディレクトリを作成し、その中にひな形のsnapcraft.yaml を生成してくれる。

パッケージのビルド

snapcraft.yaml が置かれたディレクトリで、snapcraft と実行する。
ビルド時にkvmを使用するようで、仮想環境内でのビルドには工夫がいるかもしれない。
(自分の場合はめんどうなので、ネイティブなUbuntuホスト上で行っている)

https://forum.snapcraft.io/t/kvm-not-working-in-ubuntu-guest-machine/16559

パーミッション

interface により細かくアプリのアクセス制限がなされる。
通信/ファイルアクセス/HW制御などなど。

https://snapcraft.io/docs/supported-interfaces

nokutenokute

multipass のエラーが出る場合

きちんと調べていないが、multipassの再起動を下記コマンドで行い対処している。

sudo snap restart multipass
nokutenokute

パーミッションの追い方(調査途中)

interfaceによる制限により、snapパッケージでは満足に動作しないことがある。(読みたいファイルが読めないとか)
適切なパーミッションの設定の仕方の調査過程の記録。

https://snapcraft.io/docs/debug-snaps

開発モードでのパッケージインストール

開発モードでsnapパッケージをインストールすると、パーミッションの制限がなくなる。

sudo snap install --devmode *.snap

Journalctlによる確認

ドキュメントによると、auditログを見ながらデバッグするようだ。
auditログとinterface設定との関連がよくわからない。

sudo journalctl --since=yesterday | grep audit

自分の環境においては、AppArmorによる検知ログが見つかった。