使用clock_settime 设置时间,无需root 访问权限

使用clock_settime 设置时间,无需root 访问权限

我编写了一个 C 程序,用于将时间与 GPS 接收器的时间同步。该计算机运行的是 Ubuntu 16.04 LTS。程序使用clock_settime(CLOCK_REALTIME, ×pec)来设置时间。该程序在 bash 脚本中执行,我无法使用 sudo,因为该脚本是通过使用桌面文件启动的。有人有主意吗?

注意:该脚本正在执行多个程序,我不想以 root 身份执行

答案1

能力可以成为解决方案。

在运行程序之前,您可以向程序添加 CAP_SYS_TIME 功能,如下所示。

sudo setcap CAP_SYS_TIME+ep  /path/to/program

码头工人中的示例

sys@2a2618c145ed:~$ ./a_pr.out
clock_gettime : 1534915500.689625314
clock_gettime : 1534916100.690310388
clock_gettime : 1534915500.690651299
sys@2a2618c145ed:~$ ./test.run
clock_gettime : 1534915504.139181778
Error : clock_settime -1
clock_gettime : 1534915504.139337010
Error : clock_settime -1
clock_gettime : 1534915504.139341290
sys@2a2618c145ed:~$ filecap $(pwd)
file                 capabilities
/jeremy/a_pr.out     sys_time
sys@2a2618c145ed:~$

另外,我想推荐以下页面:允许特定用户或组在没有密码的情况下 root 访问 /bin/date

下一个可能会更好。 sudo setcap CAP_SYS_TIME+ei /路径/到/程序

相关内容