clock_settime обратная коррекция - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь сделать пару тестов, где мне нужно установить время компьютера назад или вперед в зависимости от некоторых внешних значений.Я знаю, что могу сделать это, используя 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.

...