Faketime por usuário no Linux

0

Já sei sobre faketime e datefudge, mas existe uma maneira de configurar isso de forma transparente para qualquer processo que esteja sendo executado como um determinado usuário (identificado por um UID específico)?

    
por AnonymousLurker 14.10.2013 / 05:34

1 resposta

1

Como você tem todo o código-fonte para o Linux, você pode configurar isso exatamente como você quer, mas você terá que modificar o kernel do sistema e reconstruí-lo para torná-lo assim. Não é fácil configurá-lo com base em um UID.

Se você quiser apenas que um usuário conectado tenha essa propriedade para a maioria dos comandos que eles executam, dê a eles um shell de login que use faketime para definir a variável de ambiente e, em seguida, chamar seu shell real. Você pode ter um gostinho de como isso é feito interativamente:

$ 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

Um shell de login especial também deve funcionar para cron jobs que usam o shell de login do usuário.

É claro que essa falsificação falha em qualquer programa que define ou ignora possui $LD_PRELOAD informação:

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

Tags