如何让pulseaudio以root身份运行?

Dav*_*ore 4 bash sudo text-to-speech pulseaudio sox

如果我获取一个 mp3 文件并尝试使用我的普通用户帐户使用 来收听它sox file.mp3 -d,它会完美地工作。但是,如果我在执行完之后尝试做同样的事情sudo su,则会产生:Home directory not accessible: Permission denied

用例如下:

我的 .bashrc 在我的 root 帐户和普通用户帐户之间链接。我的 .bashrc 中的一个特定行使用google_speech(它利用了 sox,它似乎使用pulseaudio 作为默认值):

function sayhi() {
    if [ "$EUID" -ne 0 ]; then
        printf "Hi, $USER! Your directory is currently "${PWD}""
        google_speech -l en "HELLO $USER!"
    else
        printf "Woah, we have a Superuser on our hands. Best be careful!"
        google_speech -l en "WARNING: ROOT ACTIVATED"
    fi
}
sayhi &
Run Code Online (Sandbox Code Playgroud)

这意味着如果我做了类似的事情,sudo su我最终应该让我的计算机与我对话。相反,我得到: Home directory not accessible: Permission denied

我该如何解决?

小智 10

为所有用户运行 PulseAudio 的解决方案

将以下行添加到/etc/systemd/system/pulseaudio.service文件并保存

[Unit]
Description=PulseAudio system server

[Service]
Type=notify
ExecStart=pulseaudio --daemonize=no --system --realtime --log-target=journal

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

启用服务

sudo systemctl --system enable pulseaudio.service
sudo systemctl --system start pulseaudio.service
sudo systemctl --system status pulseaudio.service
Run Code Online (Sandbox Code Playgroud)

编辑客户端conf /etc/pulse/client.conf并替换下面的屁股

default-server = /var/run/pulse/native
autospawn = no
Run Code Online (Sandbox Code Playgroud)

将根添加到脉冲组

sudo adduser root pulse-access
Run Code Online (Sandbox Code Playgroud)

最后重新启动系统