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