Networkmanager

允許 Rygel 通過 DBUS 與 NetworkManager 對話?

  • July 28, 2014

我正在嘗試在無頭 Fedora 20 系統上執行 UPNP 媒體伺服器Rygel 。我安裝了 Rygel,並為它創建了一個專門的使用者和systemd單元。Rygel 啟動,但它沒有在我要求的埠上監聽。我認為這是因為它無法從NetworkManager. 如何授予它通過 DBUS 與 NetworkManager 通信的權限?

注意:NetworkManager和都已dbus-daemon確認執行。

啟動 Rygel 的輸出:

Feb 02 19:13:08 inspiron systemd[1]: Starting Rygel DLNA server...
Feb 02 19:13:08 inspiron systemd[1]: Started Rygel DLNA server.
Feb 02 19:13:09 inspiron rygel[2276]: Rygel-Message: rygel-main.vala:87: Rygel v0.20.3 starting…
Feb 02 19:13:09 inspiron dbus-daemon[465]: dbus[465]: [system] Rejected send message, 3 matched rules; type="method_call", sender=":1.95" (uid=1001 pid=2276 comm="/usr/bin/rygel -c /etc/rygel.conf ") interface="org.freedesktop.NetworkManager" member="GetDevices" error name="(unset)" requested_reply="0" destination=":1.12" (uid=0 pid=566 comm="/usr/sbin/NetworkManager --no-daemon ")
Feb 02 19:13:09 inspiron dbus[465]: [system] Rejected send message, 3 matched rules; type="method_call", sender=":1.95" (uid=1001 pid=2276 comm="/usr/bin/rygel -c /etc/rygel.conf ") interface="org.freedesktop.NetworkManager" member="GetDevices" error name="(unset)" requested_reply="0" destination=":1.12" (uid=0 pid=566 comm="/usr/sbin/NetworkManager --no-daemon ")
Feb 02 19:13:09 inspiron rygel[2276]: ** (rygel:2276): WARNING **: Error fetching list of devices: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 3 matched rules; type="method_call", sender=":1.95" (uid=1001 pid=2276 comm="/usr/bin/rygel -c /etc/rygel.conf ") interface="org.freedesktop.NetworkManager" member="GetDevices" error name="(unset)" requested_reply="0" destination=":1.12" (uid=0 pid=566 comm="/usr/sbin/NetworkManager --no-daemon ")
Feb 02 19:13:09 inspiron rygel[2276]: Rygel-Message: New plugin 'MediaExport' available

我的 Rygelsystemd配置:

[Unit]
Description=Rygel DLNA server
After=syslog.target

[Service]
User=rygel
Group=rygel
ExecStart=/usr/bin/rygel -c /etc/rygel.conf

[Install]
WantedBy=multi-user.target

我的(略微編輯的)rygel 配置:

[general]
upnp-enabled=true
video-upload-folder=@VIDEOS@
music-upload-folder=@MUSIC@
picture-upload-folder=@PICTURES@
media-engine=librygel-media-engine-gst.so
interface=192.0.2.100
port=49152
log-level=*:5
allow-upload=false
allow-deletion=false

[GstMediaEngine]
transcoders=mp3;lpcm;mp2ts;wmv;aac;avc

[Renderer]
image-timeout = 15

[MediaExport]
enabled=true
title=@REALNAME@'s media
uris=/path/to/media
extract-metadata=true
monitor-changes=true
virtual-folders=true

[Tracker]
enabled=false

[Playbin]
enabled=false

[ZDFMediathek]
enabled=false

[GstLaunch]
enabled=false

[Test]
enabled=false

[ExampleServerPluginVala]
enabled=false

[ExampleServerPluginC]
enabled=false

[ExampleRendererPluginVala]
enabled=false

[ExampleRendererPluginC]
enabled=false

[MPRIS]
enabled=false

[External]
enabled=fals

問題是 Rygel 使用的特定 NetworkManager dbus 方法需要at_console授權。這個顯然已經過時的屬性早於 polkit 並且在登錄期間通過多個 pam 模組設置並由所有子程序繼承。由於 systemd 無法設置此屬性並且 Rygel 以系統(非控制台)使用者身份啟動,因此拒絕訪問必要的 NetworkManager dbus 方法。

好消息是,fedora正在協調at_console各種軟體包中 dbus 策略的刪除。NetworkManager 0.9.9.1 中提供的策略文件與您描述的設置完美配合。如果您無法更新,請將/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf(可能取決於發行版)替換為上游 org.freedesktop.NetworkManager.conf

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