我有一个小型 Linux 设备可能当手持设备连接到该设备时,选择与该设备同步时间。我的程序一直以 root 身份运行,并且我只是使用date --set
命令。但我正在尝试将所述程序移至权限较低的用户。由于我现在正在使用systemd
,我认为我应该使用timedatectl
来设置时间而不是直接日期。我已经向自己证明了如何做到这一点。但我不知道如何从非root驱动它。
我可以使用特定的 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
.您表示不愿意采用这种方法,但您只会授予用户 root 访问权限来运行单个timedatectl
命令。
这应该也可以使用 PolicyKit 来解决,但它实际上会产生与允许用户以 root 身份运行单个命令相同的结果。因此风险是相似的——并且您已经了解如何解决问题sudo
。