Como o número do registro de data e hora em / etc / shadow é calculado?

3

No meu sistema, a página man da shadow define o valor da terceira coluna desta forma:

The date of the last password change, expressed as the number of days since Jan 1, 1970.

Eu tenho um valor de exemplo "17050". passwd -S diz que este é o "2016-09-06". Mas os segundos desde 1970 são "1473112800.0". Quando eu calcular 1473112800.0 / (60 * 60 * 24) recebo "17049.9166666666".

Como o "17050" é calculado? É arredondado ou é sempre o próximo inteiro maior?

    
por ceving 22.09.2017 / 17:12

2 respostas

2

São vários dias, não segundos, desde a época.

$ date -I -d '1970-01-01 + 17050 days'
2016-09-06

(Como uma nota lateral, tecnicamente você não pode representar "365 dias a partir de agora" em segundos; os dias não têm uma duração fixa ou até mesmo conhecível além de 6 meses, devido a segundos bissextos.)

    
por 22.09.2017 / 17:25
1

Verificando o código fonte (para a versão Debian), é apenas escalado usando a divisão de inteiros por 24 × 3600 , então está truncado.

Observe que o valor que você tem é exatamente duas horas de folga em seu cálculo, o que provavelmente pode ser explicado pelas variações de fuso horário.

    
por 22.09.2017 / 17:33

Tags