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