Snapdで動作するアプリケーションを取得しようとしていますが、AppArmorの権限に関する問題に遭遇しました。私のアプリを完全に機能させるには、既存のインターフェースのいずれでも提供されていないカスタムAppArmorルールが必要なようです。
次のように、/ var/lib/snapd/apparmor/profiles /にスナップインストールした後、アプリのAppArmorプロファイルに手動で追加のルールを追加することで、機能するようになります。
/sys/devices/** r,
/sys/class/net/eth0/address r,
/dev/sda1 r,
capability sys_rawio,
Snapのインストール時にこれらを自動的に構成する方法はありますか、またはこれらの変更を行うためにカスタムのポストインストールスクリプトを維持する必要がありますか?
このページ の下部には、可能性を示唆するyaml構文が示されています。
services:
- name: bar # uses 'default' template with 'network-client' cap
- name: baz # uses 'default' template with specified caps
caps:
- network-client
- norf-framework_client
- name: qux # uses 'nondefault' template with no caps
security-template: nondefault
- name: quux
security-policy: # uses custom security policy as defined by relative paths
apparmor: meta/quux.aa
seccomp: meta/quux.sc
しかし、これはUbuntu 15.10(私は16.04を使用しています)を参照しており、現在snapdでサポートされていない構文(「apps」ではなく「services」など)を使用しているようです。あなたが提供できる助けをありがとう。
16.04では、これを行う方法は、スナップ定義のカスタムスキーマによって駆動されるsnapdコードで定義された「インターフェイス」を使用することです。すでに定義された束があり、必要なものは次のとおりです。
ブランケット/ sys/devices/*が着陸することはまずありませんが、実際には特定のタイプのデバイスへの特定のタイプのアクセスが必要であり、それらはすべて設計および着陸することができます。
必要なものをハッシュ化する最適な場所は、freenode IRCの#snappyで、zygaとチャットして、既存のインターフェースを記述するコードへのポインターを探すことです。簡単に修正できるパッチにする必要があります。