Networkmanager
允許 Rygel 通過 DBUS 與 NetworkManager 對話?
我正在嘗試在無頭 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
我的 Rygel
systemd
配置:[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。