我正在尝试进行一些测试,这些测试需要根据一些外部值来设置计算机时间的后退或前进。我知道我可以使用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'文件。