如果我拿一个 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
.
我该如何解决这个问题?
为所有用户运行 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
最后重启系统
此解决方案已在多个 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
只是纠正最后一个shell命令最后一个作家Areg Gasparyan告诉,应该正确afaic:
sudo useradd -g root pulse-access