我们应该“启用”用户 Systemd 服务“pulseaudio.service”吗?

我们应该“启用”用户 Systemd 服务“pulseaudio.service”吗?

/usr/lib/systemd/user/pulseaudio.service我刚刚意识到包中提供了一个pulseaudio

它被禁用了,但pulseaudio没有它也能正常工作。已经用了一年了。启动后不需要做任何事情来启动实际的可执行文件。毕竟它是 Ubuntu 附带的软件包。

为什么会这样?我应该启用该服务吗?如果是这样,为什么 Ubuntu 默认不这样做?此外,与当前操作相比会有什么变化?

提前致谢

PS:ubuntu wiki 页面没有提供任何信息。

答案1

在 PulseAudio 文档中,对在系统模式下运行 pulseaudio 的目的以及为什么它不是默认模式进行了广泛的讨论:https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

缺点如下:https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/

你应该阅读文档中的整页,主要观点是

在系统范围模式下运行 PulseAudio 有一些限制:

  • 所有有权访问声音服务器的用户都可以终止/修改所有其他连接客户端的所有接收器/源和流
  • 缓存的声音样本只有一个命名空间,即同一时间只能有一个 Gnome 事件声音配置文件处于活动状态

它有一些缺点:

  • 安全性更差,因为用户现在可以命令以另一个用户名运行的服务器应用程序。他甚至可以从该声音服务器加载/卸载模块
  • 由 module-stream-restore 管理的存储音量级别等设置不再是针对每个用户的,而是针对整个系统的

这就是它默认不启用的原因。如果您意识到潜在的影响,使用它也不会有什么坏处。

如果启用它,您可以在没有登录用户的机器上获得声音(例如通过网络)。

答案2

文件内容如下:

[Unit]
Description=Sound Service

# We require pulseaudio.socket to be active before starting the daemon, because
# while it is possible to use the service without the socket, it is not clear
# why it would be desirable.
#
# A user installing pulseaudio and doing `systemctl --user start pulseaudio`
# will not get the socket started, which might be confusing and problematic if
# the server is to be restarted later on, as the client autospawn feature
# might kick in. Also, a start of the socket unit will fail, adding to the
# confusion.
#
# After=pulseaudio.socket is not needed, as it is already implicit in the
# socket-service relationship, see systemd.socket(5).
Requires=pulseaudio.socket
ConditionUser=!root

[Service]
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
# Note that notify will only work if --daemonize=no
Type=notify
UMask=0077

[Install]
Also=pulseaudio.socket
WantedBy=default.target

似乎是一个自动启动服务,用于运行 PulseAudio,而不是像它所说的那样运行systemctl --user start pulseaudio

如果我错了请纠正我!

相关内容