私は、root以外のユーザーにタイムゾーンを設定する組み込み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...