Pulseaudio

切換使用者時如何防止靜音?

  • June 18, 2019

我經常有兩個 KDE 會話作為兩個不同的使用者執行。當我在它們之間切換時(例如 Ctrl+Alt+F8),在其中一個帳戶中播放的音樂在另一個帳戶中被靜音。當我切換到虛擬終端 (Ctrl+Alt+F1) 時也會發生同樣的情況。

據我所知,這是故意的,對多個人類使用者有意義,但在我的設置中很煩人。

當我切換到另一個 KDE 會話或虛擬終端時,如何讓音樂保持可聽?

我正在使用基於 Ubuntu 16.04 LTS (Xenial Xerus) 和 KDE 5.36.0 和 Pulseaudio 8.0 的 KDE Neon 5。

解決方案

  1. 將所有應該能夠播放的使用者添加到脈衝訪問

# adduser problemofficer pulse-access 2. 使用以下內容創建*/etc/systemd/system/pulseaudio.service :*

[Service]
Type=simple
PIDFile=/var/run/pulse/pid
ExecStart=/usr/bin/pulseaudio --daemonize=yes --system=yes --disallow-module-loading=yes --disallow-exit=yes

[Install]
WantedBy=multi-user.target
  1. 啟用這個新的 systemd 服務,以便它在引導時啟動:# systemctl enable pulseaudio
  2. 請注意,此配置是
  • 不太安全(例如其他使用者可以收聽您的麥克風)
  • 聲音輸出將不再自動在耳機之間切換,並且
  • 可能會阻止藍牙工作。另請參閱下面的警告部分。
  1. 重啟

原因

聲音轉動的原因是 Pulseaudio 在每次登錄時都會以該使用者權限啟動,並且系統¹不允許其他使用者收聽其他使用者的音頻。

解決方案背景

脈衝音頻

為了解決這個問題,Pulseaudio 必須以 root 權限啟動,以便它作為系統範圍的守護程序執行,該守護程序僅適用於所有使用者。每個人都將連接到這一實例,並且能夠播放和收聽其他使用者播放或錄製的所有內容。

Pulseaudio 實際上不會一直以 root 身份執行,但會放棄這些權限並假設使用者為pulse

man pulseaudio

使用者 脈衝,組 脈衝:如果 PulseAudio 作為系統守護程序執行(參見上面的 –system)並以 root 身份啟動,則守護程序將放棄特權並成為使用此使用者和組的普通使用者程序。如果 PulseAudio 作為使用者守護程序執行,則此使用者和組沒有意義。

請注意,“使用者守護程序”與“系統守護程序”不同。前者是 Pulseaudio 之前的執行方式,後者是應用更改後的執行方式。

為了能夠連接到 Pulseaudio 系統服務,您需要成為pulse-access組的成員。

又從man pulseaudio

Group pulse-access:如果 PulseAudio 作為系統守護程序執行(請參閱上面的 –system),則當該組的成員通過 AF_UNIX 套接字連接時,將授予訪問權限。如果 PulseAudio 作為使用者守護程序執行,則該組沒有意義。

系統服務

作為一種快速解決方法,可以簡單地殺死 Pulseaudio 的所有“使用者守護程序”實例,然後執行/usr/bin/pulseaudio --system=yes. 這將啟動 Pulseaudio 而不會成為守護程序,並且以一種更不安全的方式啟動,但對於快速的概念驗證檢查可能很有用。

為了使這個持久化並使 Pulseaudio 守護程序在啟動時自動啟動,它需要添加為 systemd 服務。這就是文件*/etc/systemd/system/pulseaudio.service*的用途。

當 Pulseaudio 已經找到系統守護程序時,它不會啟動使用者守護程序²,這就是此解決方案有效的原因。

警告

Pulseaudio 官方文件建議不要將 Pulseaudio 用作系統守護程序。提到的一些問題是:

  • >

…從安全的角度來看,一個特別有問題的事情是模組載入。任何有權訪問的人都可以載入和解除安裝模組。可以禁用模組載入,但是藍牙和 alsa 熱插拔功能不起作用……

(這意味著當您插入耳機時,聲音輸出不會自動從揚聲器切換到耳機。當您移除耳機時,反之亦然。兩者都必須手動完成。)

  • >

…系統模式下更高的記憶體使用率和 CPU 負載…

(雖然我個人沒有註意到負載有任何變化。)

  • >

…所有有權訪問伺服器的使用者都可以相互嗅探對方的音頻流,收聽他們的麥克風,等等…

  • >

…您還失去了許多進一步的功能,例如橋接千斤頂…

可能還有其他一些我不理解並因此感覺不到的事情值得包括在這裡。

關於 thecarpy 的回答的注意事項:他的回答中描述的所有步驟都不是此解決方案所必需的。

資源


¹如果有人可以詳細解釋這一點,我將非常感激。

² 假設

$$ citation required $$

引用自:https://unix.stackexchange.com/questions/382601