루트가 아닌 사용자가 d-bus를 통해 시간대를 설정하도록 허용하는 방법은 무엇입니까?

루트가 아닌 사용자가 d-bus를 통해 시간대를 설정하도록 허용하는 방법은 무엇입니까?

저는 루트가 아닌 사용자에게 시간대를 설정하는 임베디드 Linux 장치에 애플리케이션을 작성하고 있습니다. 필수 사항으로 요약하기 위해 다음을 수행하고 싶습니다.

dbus-send --system --dest=org.freedesktop.timedate1 --print-reply /org/freedesktop/timedate1 \
        org.freedesktop.timedate1.SetTimezone  string:'America/New_York' boolean:false

하지만 이렇게 하면 항상 다음과 같은 오류가 발생합니다.

Error org.freedesktop.DBus.Error.AccessDenied: Permission denied

기타 정보

장치가 SELinux를 실행 중입니다.장애가 있는polkit이 설치되어 있지 않거나 실행되고 있지 않습니다.

/etc/dbus-1/system.d/org.freedesktop.timedate1.conf다음과 같은 d-bus 구성 파일이 있습니다 .

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <policy user="root">
    <allow own="org.freedesktop.timedate1"/>
    <allow send_destination="org.freedesktop.timedate1"/>
    <allow receive_sender="org.freedesktop.timedate1"/>
  </policy>
  <policy user="ceres">
    <allow own="org.freedesktop.timedate1"/>
    <allow send_destination="org.freedesktop.timedate1"/>
    <allow receive_sender="org.freedesktop.timedate1"/>
  </policy>

  <policy context="default">
    <allow send_destination="org.freedesktop.timedate1"/>
    <allow receive_sender="org.freedesktop.timedate1"/>
  </policy>
</busconfig>

ceres사용자에게 시간대를 변경할 수 있는 권한을 부여하고 싶습니다 .

내 질문

  1. 루트가 아닌 특정 사용자가 이 D-Bus 인터페이스를 통해 시간대를 설정하도록 하려면 어떻게 해야 합니까?
  2. 보다 일반적으로 "권한 거부" 오류의 원인을 어떻게 확인합니까?
  3. journalctl --follow이런 일이 발생하면 아무 것도 표시되지 않습니다. 어디를 봐야 할까요?

답변1

dbusLennart가 아래 링크에서 설명하는 것처럼 구성만으로는 이 작업을 수행 할 수 없습니다 ... (설명에서 제안한 대로) 이 버그 보고서를 확인
해야 합니다 .polkitsudo timedatectl...

dbus 접근 방식: PolKit 없이 컴파일할 때 Linux 기능 확인으로 대체

관련 정보