认识
Interface 允许(或拒绝)访问快照限制之外的资源。
大多数用户不需要担心 Interface。Snap 专为强大的应用程序隔离而设计,并自动进行安全的 Interface 连接。
Interface 最常用于启用快照来访问声音播放或录音、网络和 $HOME 目录。但是,快照需要并提供哪些 Interface,很大程度上取决于快照的类型及其自身的要求。
有关 Interface 的完整列表以及它们允许的访问类型,参考 Supported interfaces 文档。
组成
Interface 提供对资源的访问级别,例如由插槽定义的音频播放。一个或多个卡扣可以通过将相应的插头连接到插槽来访问该资源。
换句话说,插槽是资源的提供者,而插头是资源的消费者,并且一个插槽可以支持多个插头连接。
在捕捉连接 vlc 的输出中(见上文),VLC 使用的每个 Interface 都列在第一列中。然后,插头和插槽列描述了每个 Interface 的连接方式。
例如,音频播放 Interface 将 VLC 的音频播放插头连接到系统的音频播放插槽,以便您可以听到它产生的声音。
默认情况下,应用程序运行在隔离环境中,不允许访问其他资源。
应用
connections
$ snap connections --all Interface Plug Slot Notes adb-support scrcpy:adb-support :adb-support - alsa ffmpeg:alsa :alsa manual appstream-metadata snap-store:appstream-metadata :appstream-metadata - iaudio-playback ardour:audio-playback :audio-playback - dbus - cameractrls:dbus-daemon - [...] $ snap connections vlc Interface Plug Slot Notes audio-playback vlc:audio-playback :audio-playback - audio-record vlc:audio-record - - camera vlc:camera - - desktop vlc:desktop :desktop - home vlc:home :home - (...) $ snap connections // To see all connected interfaces Interface Plug Slot Notes adb-support scrcpy:adb-support :adb-support - alsa ffmpeg:alsa :alsa manual alsa telegram-desktop:alsa :alsa manual audio-playback ardour:audio-playback :audio-playback - audio-playback chromium:audio-playback :audio-playback - (...)
connect
snap connect <snap>:<plug interface> sudo snap connect vlc:audio-record snap connect <snap>:<plug interface> <snap>:<slot interface> # 相同 Interface 的 plug/slot 才能互联
改进
WIP
参考
Interface management | Snapcraft documentation
Supported interfaces | Snapcraft documentation