如何让 pulseaudio 以 root 身份运行?

问题描述 投票:0回答:3

如果我拿一个 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 &

这意味着如果我做像

sudo su
这样的事情,我最终应该让我的电脑跟我说话。相反,我得到:
Home directory not accessible: Permission denied
.

我该如何解决这个问题?

bash text-to-speech sudo sox pulseaudio
3个回答
5
投票

为所有用户运行 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

启用服务

sudo systemctl --system enable pulseaudio.service
sudo systemctl --system start pulseaudio.service
sudo systemctl --system status pulseaudio.service

编辑客户端 conf /etc/pulse/client.conf 并替换 ass bellow

default-server = /var/run/pulse/native
autospawn = no

脉冲群加根

sudo adduser root pulse-access

最后重启系统


0
投票

此解决方案已在多个 debian 11 服务器上为我工作,但有一台 Dell r620 和 r720,其中声卡导致机器在 2-3 分钟的视频后挂起。我终于得到了一个 HDMI 声音提取器,可以与 r620 上的 25w HDMI 图形卡一起使用,但是摆弄 /etc/pulse/default.pa 默认卡设置并没有解决它。设法从 alsaplayer 获取声音,删除了对 /etc/pulse/default.pa 和 /etc/asound.conf 的所有更改,并以用户身份启动 pulse,它检测到 HDMI 并且可以观看视频而无需挂起。

将其添加回 /etc/systemd/services,重新启用,但它不起作用,但在以 root 身份手动重启脉冲服务后,HDMI 再次出现。修改了文件以延迟 pulse 的启动,现在它可以工作了。因此,如果您发现它在首次启动时不起作用,但在手动重启后起作用,请尝试添加 ExecStartPre=/bin/sleep 30。对 /etc/pulse/client.conf 的更改似乎没有必要,但我还没有彻底测试.

文件 /etc/systemd/system/pulseaudio.service 如下

[Unit]
Description=PulseAudio system server

[Service]
Type=notify
ExecStartPre=/bin/sleep 30
ExecStart=pulseaudio --daemonize=no --system --realtime --log-target=journal

[Install]
WantedBy=multi-user.target

-2
投票

只是纠正最后一个shell命令最后一个作家Areg Gasparyan告诉,应该正确afaic:

sudo useradd -g root pulse-access
© www.soinside.com 2019 - 2024. All rights reserved.