SUDO 和声音,如何让它们协同工作

SUDO 和声音,如何让它们协同工作

基本上,在 sudo 会话中,即使模拟另一个非 root 用户(sudo -u 用户名命令)也没有声音。

在 sudo 会话内部,声音似乎被禁用。

我需要声音,如何解决?

答案1

我之前已经通过在“系统模式”下运行 pulseaudio 解决了这个问题,在这种情况下,所有用户都可以使用它,而不仅仅是运行桌面的用户。您可以在此处阅读更多相关信息:

http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide

请注意,有一些不这样做的充分理由:

http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide

不幸的是,我不知道还有其他方法可以解决运行 pulseaudio 的系统上的问题。

答案2

尝试:

sudo usermod -G audio -a username

然后执行sudo login username并检查运行时是否列出了音频groups。这应该可以解决问题。

答案3

我通过在 pulseaudio 偏好设置中启用“网络服务器”解决了这个问题。

要获取 pulseaudio 首选项管理器,请打开终端并输入

sudo apt-get install paprefs

然后以通常的登录方式运行它(即不要使用来运行它sudo -u),输入

paprefs

在网络服务器选项卡上,单击“启用对本地声音设备的网络访问”,保留其他所有设置不变。

图像:https://i.stack.imgur.com/Ua0qg.png

关闭 PulseAudio 偏好设置窗口,您就大功告成了。您只需执行一次此操作。

据我了解,这种方法避免了在“系统模式”下运行 pulseaudio 的一些安全问题,但是,例如,您运行的程序sudo -u仍将共享您的音量级别。

由于我们没有勾选“允许局域网上的其他机器发现本地声音设备”或“不需要身份验证”,因此您的声音设备实际上不可供网络上的其他计算机使用。此设置仅允许您的计算机连接到自身,您根本不需要连接到网络。


注意:如果您正在运行透明代理(如果您不知道,您可能没有),您必须确保环回 TCP 连接未在 NAT 级别重定向。要直接向 iptables 类型添加例外

sudo iptables -t nat -I OUTPUT -p tcp -o lo -j RETURN

如果您的代理在预路由链中重定向,则替换OUTPUT为。PREROUTING

答案4

如果您使用“sux”而不是“sudo”,一切都应该可以正常工作。

https://apps.ubuntu.com/cat/applications/precise/sux/

相关内容