Altere a data apenas para um único usuário não raiz no Linux [duplicado]

1

É possível alterar a data apenas para um usuário específico (não-raiz) no Linux?

Se possível, como fazer isso?

E seria ótimo se alguém pudesse apontar o impacto disso.

EDITAR

Colocando minha pergunta em outras palavras.

Eu quero mudar o dia e a hora do que é agora para outro dia e hora no Linux sem privilégios de root. Como posso conseguir isso?

    
por g4ur4v 21.03.2014 / 11:06

3 respostas

3

A data é um parâmetro de todo o sistema que é crucial para o sistema (não para o usuário). Ele aparece nos registros de data e hora do sistema de arquivos, no log, na operação do daemon, no agendamento e assim por diante. Muitos programas quebram ou podem até corromper seu sistema se a data não estiver correta. Portanto, nesse sentido, o tempo tem que ser continuamente crescente e correto, não apenas localmente, mas se qualquer rede não www for feita, também globalmente. Até os certificados param de funcionar se houver muita diferença de horário entre o cliente e o servidor.

Portanto, neste sentido, a data / hora do sistema é apenas uma - a data / hora real (preferencialmente em UTC, caso contrário o sistema de arquivos do seu laptop pode quebrar quando você muda de fuso horário).

Por outro lado, a configuração de fuso horário é apenas uma camada de conversão do UTC para a data / hora que é apresentada ao usuário. Isso pode ser alterado (veja o comentário de X Tian). Mas eu não sei se é isso que você quer - só pode definir um inteiro (às vezes frações de números inteiros) número de horas, nunca mais que um dia. É tecnicamente possível construir um fuso horário personalizado para induzir um atraso arbitrário, mas é um hack feio.

Toda a manipulação básica do tempo ainda lida com a hora do unix (um inteiro que marca uniformemente a partir de 1/1/1970), então o código do idioma (fuso horário e material) geralmente é usado apenas para exibição visual de tempo ou usos específicos em scripts que dependem dessa funcionalidade. Por exemplo, a função date chamadas clock_gettime que recupera a hora do sistema e, em seguida, chama localtime para converter na localidade atual. A representação interna é sempre a hora do sistema.

Pode haver módulos especiais do kernel para fazer isso - ou bibliotecas de substituição. Você pode criar uma biblioteca corrompida com a função clock_gettime adaptada e torná-la visível para um usuário. Não tenho ideia de como isso afetaria seu sistema. A manipulação do sistema de arquivos e coisas assim ainda são tratadas pelo kernel, então o essencial funcionaria. No entanto, agendamento, instalações de backup e makefiles podem não funcionar corretamente.

EDIT: talvez o que você quer é uma máquina virtual. Isso é mais isolado e se você quiser mudar a hora, você pode. Às vezes é útil contornar falhas de software acionadas por tempo.

    
por 21.03.2014 / 11:26
2

Você pode definir sua variável de ambiente TZ em seu perfil ou no perfil comum especificamente para esses usuários.

$ date
Fri Mar 21 10:11:15 GMT 2014
$ export TZ="PST+8"
$ date
Fri Mar 21 02:11:53 PST 2014

O valor máximo para TZ é de 24 horas

    
por 21.03.2014 / 11:14
1

Existem apenas algumas chamadas do sistema que obtêm a data / hora, para que você possa colocar uma biblioteca de pré-carregamento no local para alterar os valores retornados dessas chamadas, dependendo do que você deseja fazer (o que ainda é pouco claro a questão). Este foi um truque comum quando o teste do Y2K estava na altura.

Parece que o link pode fazer o que você quer, mas, se não, é simples o suficiente para rolar o seu próprio.

    
por 21.03.2014 / 15:55

Tags