我正在使用 Parabola(基于 Arch),并且我想使用 firejail 来沙箱一两个不太受信任的应用程序(特别是 Steam)。但是,当在 firejail 中运行应用程序时(即使使用 --noprofile 选项,该选项应该提供限制最少的沙箱),我听不到任何声音。我尝试过 steam 和 Rhythmbox,但两者都有同样的问题。
我有一张不限票这里在 github 上。我正在使用pulseaudio,我怀疑这个问题可能类似于为什么当我以root用户身份从终端运行相同的应用程序时也没有声音(因为firejail本身需要超级用户权限来设置沙箱,然后再移交给被监禁的申请)。
有没有办法可以为根用户启用pulseaudio中的声音,这样如果我以普通用户身份登录桌面;su
在终端中root;然后运行rhythmbox,声音会播放吗?我知道这一点现有答案;但是,它似乎对我不起作用(大概,只有当我以 root 身份登录整个桌面会话时,这才有效,但我不想这样做)。
答案1
你尝试过 apulse 包吗?
该程序提供了 PulseAudio API 的替代部分实现。它由一个加载器脚本和许多与原始 PulseAudio 具有相同名称的共享库组成,因此应用程序可以动态加载它们并认为它们正在与 PulseAudio 通信。在内部,不使用单独的声音混合守护进程。相反,apulse 依赖 ALSA 的 dmix、dsnoop 和 Plug 插件来处理多个声源并捕获同时运行的流。 dmix 插件复用多个播放流; dsnoop 插件允许多个应用程序从单个麦克风捕获;和插头插件透明地在各种样本格式、采样率和通道数之间转换音频。
apulse <program>
答案2
回答我自己的问题:我卸载了pulseaudio,现在声音似乎在被firejailed的应用程序中工作得很好(大概他们现在直接使用ALSA)。我怀疑这个问题是因为pulseaudio不允许root用户访问服务器;但是,firejail 需要 root 权限。