我的經驗是啟用 VNC server 後,window manager 採用 XFCE,當要撥放音樂時,軟體顯示無權限存取音效 device。pulseaudio 套件已經移除了,/etc/security/console.perms.d/50-default.perms 已經指定 users 群組有音效 device,但是不知道為什麼沒有作用,必須手動 chmod 666 <音效 device>。應該是本機 KDE、Gnome 的 display manager 在用戶登入時已經透過 PAM 機制設定好 permission,Google 後找到了一個比較好的解決方法。
比較新的 linux distribution 都已經採用 HAL 和 ACL 來管理 device 了,我們也遵循這個趨勢。
首先啟用 ConsoleKit、haldaemon (建議同時啟用 avahi-daemon、messagebus ) 這幾個服務。/usr/bin/getfacl /dev/dsp 您會看到以下的輸出:
# file: dev/dsp
# owner: root
# group: root
user::rw-
user:gdm:rw-
group::rw-
mask::rw-
other::—
通常我們會希望1個 group 的 user 都可以存取音效 device,這時候只要在 /usr/share/hal/fdi/policy/20thirdparty 目錄加上1個 acl 設定檔如下:
>>> 90-grant-audio-devices-to-users.fdi <<<
<?xml version=”1.0″ encoding=”UTF-8″?>
<deviceinfo version=”0.2″>
<device>
<!– grant access to sound devices to group users.. so orca/a11y works –>
<match key=”info.capabilities” contains=”access_control”>
<match key=”info.capabilities” contains=”alsa”>
<append key=”access_control.grant_group” type=”strlist”>users</append>
</match>
<match key=”info.capabilities” contains=”oss”>
<append key=”access_control.grant_group” type=”strlist”>users</append>
</match>
</match>
</device>
</deviceinfo>
這個設定檔賦予 ‘users’ 用戶群組 alsa、oss 音效 device 讀寫權限,重新開機後再執行 /usr/bin/getfacl /dev/dsp 結果如下:
# file: dev/dsp
# owner: root
# group: root
user::rw-
user:gdm:rw-
group::rw-
group:users:rw-
mask::rw-
other::—
這時候再撥放音樂檔案就不會有 permission deny 的問題了。