rum*_*ums 7 apparmor ubuntu-core 16.04 snap
我正在尝试让应用程序使用 snapd,但遇到了一些有关 AppArmor 权限的问题。似乎为了让我的应用程序功能齐全,它需要一些现有接口未提供的自定义 AppArmor 规则。
在 /var/lib/snapd/apparmor/profiles/ 下进行 snap 安装后,我可以通过手动向应用程序的 AppArmor 配置文件添加其他规则来使事情正常进行,如下所示:
/sys/devices/** r,
/sys/class/net/eth0/address r,
/dev/sda1 r,
capability sys_rawio,
Run Code Online (Sandbox Code Playgroud)
有没有办法让 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
Run Code Online (Sandbox Code Playgroud)
但这是参考 Ubuntu 15.10(我使用的是 16.04),它似乎使用了 snapd 当前不支持的语法(例如,“服务”而不是“应用程序”)。感谢您的任何帮助,您可以提供。
在 16.04 中,执行此操作的方法是使用 snapd 代码中定义的“接口”,该接口由 snap 定义中的自定义架构驱动。已经定义了一堆,看起来你需要的只是:
您不太可能获得一揽子 /sys/devices/* 着陆,但我怀疑您实际上需要对特定类型的设备进行特定类型的访问,而这些都可以设计和着陆。
讨论您需要的内容的最佳位置是在 freenode IRC 上的 #snappy 中,与 zyga 聊天以获取描述现有接口的代码指针。应该是一个简单的补丁即可工作。
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |