Linux 中每个用户的虚假时间

Linux 中每个用户的虚假时间

我已经了解 faketime 和 datefudge,但是有没有办法为以特定用户(由特定 UID 标识)运行的任何进程透明地设置它们?

答案1

由于您拥有 Linux 的完整源代码,因此按照你的需要进行设置,但你必须修改系统内核并重建它才能实现这一点。简单的根据 UID 进行设置。

如果您只想让登录用户在执行大多数命令时都具有此属性,请为他们提供一个登录 shell,用于faketime 设置环境变量,然后调用他们的真实 shell。您可以通过交互方式来体验一下这种做法:

$ 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

特殊的登录 shell 也应该适用于cron使用用户登录 shell 的作业。

当然,对于任何设置或忽略其自身$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

相关内容