Я уже знаю о faketime и datefudge, но есть ли способ настроить это прозрачно для любого процесса, который запускается как определенный пользователь (идентифицируемый определенным UID)?

1 ответ1

1

Поскольку у вас есть весь исходный код для Linux, вы можете настроить его именно так, как вам хочется, но вам придется изменить ядро системы и пересобрать его, чтобы сделать так. Нелегко настроить это на основе UID.

Если вы хотите, чтобы зарегистрированный пользователь имел это свойство для большинства выполняемых им команд, предоставьте им оболочку входа в систему, которая использует faketime для установки переменной среды, а затем вызовите их настоящую оболочку. Вы можете получить представление о том, как это выглядит, сделав это в интерактивном режиме:

$ date
Mon Oct 14 14:02:05 EDT 2013
$ faketime yesterday bash
$ date
Sun Oct 13 14:02:10 EDT 2013
$ exit
$ date
Mon Oct 14 14:02:15 EDT 2013

Специальная оболочка входа в систему также должна работать для заданий cron которые используют оболочку входа пользователя.

Конечно, эта подделка не работает для любой программы, которая устанавливает или игнорирует свою собственную информацию $LD_PRELOAD :

$ faketime yesterday bash
$ date
Sun Oct 13 14:02:20 EDT 2013
$ env -i /bin/date
Mon Oct 14 14:02:25 EDT 2013

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .