새 프로젝트에 DBus / session bus 연동으로 몇일을 고생한 듯 하다.
init process 또는 console에서 동작시킨 process에서는 문제가 없는데,
system 권한을 가진 process는 아래와 같은 [Error Log] 발생.
- system bus와 session bus는 모두 init process에서 동작시켰으니 root 권한.
- system bus 통신을 위한 socket device는 root:system ownership을 가져서 OK
- session bus 에서만 문제가 발생.
[ Error Log ]
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
session bus를 사용하는 방법이 일반적이지 않은걸까?
자료를 찾다 보니 config option 중에 <allow_anonymous>가 있다.
configuration파일 (session.conf) 에 <allow_anonymous /> 추가하니 문제는 해결이 된다.
하지만, anonymous 에서 좀 걸린다.
dbus-daemon configuration file에 대한 내용을 찾아보니. 역시나 위험성에 대해 경고하고 있다. ( https://dbus.freedesktop.org/doc/dbus-daemon.1.html )
<allow_anonymous>
If present, connections that authenticated using the ANONYMOUS mechanism will be authorized to connect. This option has no practical effect unless the ANONYMOUS mechanism has also been enabled using the <auth> element, described below.
Using this directive in the configuration of the well-known system bus or the well-known session bus will make that bus insecure and should never be done. Similarly, on custom bus types, using this directive will usually make the custom bus insecure, unless its configuration has been specifically designed to prevent anonymous users from causing damage or escalating privileges.
보안과 안정성 관련된 내용은 추가 검토 필요!!
댓글 없음:
댓글 쓰기