Como definir a expiração da senha para infinito no arquivo de sombra?

0

Eu estava lendo mais sobre como as senhas são armazenadas no linux e me deparei com o número de dias até que a senha seja alterada. O artigo que eu estava lendo diz

 The number of days after which password must be changed 
 (99999 indicates user can keep his or her password 
 unchanged for many, many years)]

Os 99999 dias são em torno de 277 anos. Eu queria saber se no ano de 2250 haverá outra situação y2k onde as máquinas das pessoas que usam o formato de sombra * nix não poderão fazer o login. Existe uma maneira de definir essa data para o infinito. Parece uma decisão de projeto muito ruim ...

    
por Udaiveer Singh 06.02.2016 / 01:23

3 respostas

1

Sim, isso será um problema para a idade da senha, mas não se preocupe, pois haverá um problema maior antes. O ano de 2038 será problema para unixtimestamp.

Os valores de tempo calculados como um inteiro de 32 bits assinado a partir de 1º de janeiro de 1970 não poderão codificar os horários após 19 de janeiro de 2038.

    
por 06.02.2016 / 01:36
1

Qual é o problema?.

não é uma data fixa, é uma diferença da última alteração. Os 99999 dias significam cerca de 273 anos de uso contínuo após a última vez que a senha foi alterada (ou inicialmente definida).

A última vez que uma senha foi alterada está relacionada ao horário do UNIX. Um valor assinado de 32 bits de segundos de January 1, 1970 . Esse é agora o contador padrão para o horário do UNIX. Com isso, o horário do UNIX precisará ser alterado antes de ultrapassar o ano (aproximadamente) 2038 (~ 19 / jan / 2038). Como o OpenBSD, o NetBSD e o x32 ABI para Linux já usam um time_t de 64 bits, parece razoável esperar que ano 2038 um bit assinado de 64 bits será o contador padrão . Isso permitirá continuar contando por cerca de 292 giga anos adicionais, ou conforme explicado na parte do NTP:

The 64 bit second value is enough to provide unambiguous time representation until the universe goes dim.

A "última vez que uma senha foi alterada" é apenas o tempo do UNIX dividido por 24 horas, 60 minutos e 60 segundos. Hoje será:

$ echo $(( $(date +%s) / 24 / 60 / 60 ))
16837

Isso é uma redução de cerca de 16 bits (2 ^ 16 = 65536) do tempo do UNIX.

Em resumo, faça seu aplicativo poder usar um contador UNIX de 64 bits, e assim:

  What is the problem?
    
por 06.02.2016 / 03:05
0

se você acha que qualquer sistema operacional existente hoje em dia vai ocorrer no ano 2250, sem grandes mudanças, aliviando problemas em potencial, temos um problema muito maior em nossas mãos do que apenas um problema estúpido de expiração de senha. Veja o que os computadores vieram nos últimos 70 anos desde que o ENIAC foi inventado. Mais de 230 anos no futuro estão próximos do infinito nesses termos.

    
por 06.02.2016 / 01:43

Tags