在 systemd-nspawn 容器中使用 playerctl

在 systemd-nspawn 容器中使用 playerctl

当我在 systemd-nspawn 容器中启动 Web 浏览器时,playerctl 命令无法播放和暂停多媒体,但它们适用于容器外的浏览器。我是否可能缺少环境变量或目录绑定以允许 playerctl 与 chroot 或容器中的应用程序交互?

答案1

playerctl 通过 D-Bus 联系你的音乐播放器会话总线1,通过 Unix 套接字访问。通常每个 UID 都有一个,其地址预计位于 中DBUS_SESSION_BUS_ADDRESS

也许可以将总线套接字绑定到容器中,以便 Web 浏览器可以连接到它,但我会不是建议这样做:会话总线上有许多可用的服务,恶意程序可能会滥用这些服务(例如,要求 gnome-shell eval() 任意 JavaScript 代码)。

扁平包装沙盒系统(与 nspawn 一样使用基于命名空间的容器)提供了通用的D-Bus 代理可以将其配置为仅允许沙盒应用程序(或由其拥有)联系特定的总线“服务名称”。如果您想将其沙盒化,我建议您通过 Flatpak 运行您的 Web 浏览器。

如果不可能,则手动设置 xdg-dbus-proxy 以让 nspawn 容器拥有必要的org.mpris.MediaPlayer2.chromium.*服务名称,而不让它与整个桌面环境对话。


1不要与系统总线混淆。

相关内容