![使用clock_settime 设置时间,无需root 访问权限](https://linux22.com/image/128577/%E4%BD%BF%E7%94%A8clock_settime%20%E8%AE%BE%E7%BD%AE%E6%97%B6%E9%97%B4%EF%BC%8C%E6%97%A0%E9%9C%80root%20%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90.png)
我编写了一个 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 /路径/到/程序