clock_settime向后校正

时间:2018-11-25 01:31:25

标签: c init ubuntu-18.04 time.h sysctl

我正在尝试进行一些测试,这些测试需要根据一些外部值来设置计算机时间的后退或前进。我知道我可以使用clock_settime()中的time.h来做到这一点。 我遇到了一个问题,当需要将时间倒退时,该操作将失败。

clock_settime的文档指出

  

只能设置CLOCK_REALTIME时钟,只有超级用户可以设置。如果系统安全级别大于1(请参阅init(8)),则时间只能提前。施加此限制是为了防止恶意的超级用户在文件上设置任意时间戳。即使系统是安全的,仍然可以使用adjtime(2)系统调用向后调整系统时间。

我需要纳秒精度,据我所知adjtime()不允许纳秒精度。 ajdtime()的另一个问题是,它不会立即设置时钟,而是会放慢时钟,直到时钟赶上设置的值。

我已经读过init(),但是我不确定如何降低安全级别,坦率地说,我宁愿不被迫这样做,但是,如果没有其他方法,我会我愿意尝试。

预先感谢

更新1

我开始研究更改securelevel,现在甚至不确定是否可以在Ubuntu上完成。在网络上,我曾经提到过编辑/etc/init/rc-sysinit.conf/etc/init/rc.conf/etc/sysctl.conf的问题,同样,我不确定如果要降低安全级别,需要添加什么内容,实际上,这是可以做的。尤其是因为我找不到'rc.securelvel'文件。

0 个答案:

没有答案