私は小さなLinuxボックスを持っています可能ポータブルデバイスがデバイスに接続されたら、デバイスと時間を同期させるように選択します。私のプログラムは常にrootとして実行され、私はdate --set
コマンドを使用します。ただし、そのプログラムを特権の低いユーザーに移動しようとします。今使っているので、直接日付の代わりに時間を合わせてsystemd
使用すればいいようです。timedatectl
私はこれを行う方法を自分で証明しました。しかし、ルート以外の場所で駆動する方法がわかりません。
特定のsudoエントリを使用できますが、私のプログラムがsudoを実行しないようにしたいと思います。これが唯一の方法であれば、私は何をすべきかを知っています。これが唯一の方法なら、質問に答えてください:)
私のユーザーをグループのメンバーにすることでそれを行うことがsystemd-timesync
できることを望みましたが、グループがあるかどうかにかかわらず、次のエラーが発生します。
> timedatectl set-time "2017-3-2 01:40:30"
Failed to set time: The name org.freedesktop.PolicyKit1 was not provided by any .service files
これが何を意味するのか、それを修正する方法、これを行う必要があるのか、それが可能なのかわかりません。
答え1
私は使用しますsudo
。ユーザーはこのアプローチをオフにすることを明らかにしましたが、ユーザーには単一のコマンドを実行するためのルートアクセス権のみを付与しましたtimedatectl
。
これしなければならないこの問題はPolicyKitを使用して解決することもできますが、実際にはユーザーがrootとして単一のコマンドを実行できるようにするのと同じ結果を生成します。したがって、リスクは似ており、トラブルシューティング方法をすでに知っていますsudo
。