Você não pode alterar a hora sem "trapacear", e isso requer raiz. Consulte Como posso alterar a data de 'alteração' de arquivo?
Como você está fazendo testes, eu optaria pela abordagem da VM. Execute seu programa em uma máquina virtual. Você pode definir a data do sistema dentro da máquina virtual para o que quiser (lembre-se de não configurar o NTP).
Como alternativa, se você estiver testando um aplicativo (em oposição a um sistema inteiro), poderá falsificar as leituras de tempo do arquivo por meio de LD_PRELOAD
( exemplo similar ) ou ptrace (mais difícil, mas funciona mesmo contra binários estaticamente vinculados) . Isso não é apropriado para todos os cenários, isso realmente depende do tipo de bugs em potencial com os quais você está testando. libfaketime permite que você execute um programa e faça crer que ele está sendo executado em um horário diferente; ele também pode lembrar-se de registros de data e hora falsificados, para que você possa aproveitá-lo e não ter que escrever nenhum código extra de baixo nível.