저는 루트가 아닌 사용자에게 시간대를 설정하는 임베디드 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
사용자에게 시간대를 변경할 수 있는 권한을 부여하고 싶습니다 .
내 질문
- 루트가 아닌 특정 사용자가 이 D-Bus 인터페이스를 통해 시간대를 설정하도록 하려면 어떻게 해야 합니까?
- 보다 일반적으로 "권한 거부" 오류의 원인을 어떻게 확인합니까?
journalctl --follow
이런 일이 발생하면 아무 것도 표시되지 않습니다. 어디를 봐야 할까요?
답변1
dbus
Lennart가 아래 링크에서 설명하는 것처럼 구성만으로는 이 작업을 수행 할 수 없습니다 ... (설명에서 제안한 대로) 이 버그 보고서를 확인
해야 합니다 .polkit
sudo timedatectl...