/etc/shadow의 타임스탬프 숫자는 어떻게 계산됩니까?

/etc/shadow의 타임스탬프 숫자는 어떻게 계산됩니까?

내 시스템에서 섀도우 매뉴얼 페이지는 세 번째 열 값을 다음과 같이 정의합니다.

비밀번호가 마지막으로 변경된 날짜로, 1970년 1월 1일 이후의 일수로 표시됩니다.

예제 값 "17050"이 있습니다. passwd -S이것이 "2016-09-06"이라고 가정해 보세요. 하지만 1970년 이후의 초 수는 "1473112800.0"입니다. 1473112800.0/(60*60*24)을 계산하면 "17049.9166666666"이 나옵니다.

"17050"은 어떻게 계산되나요? 반올림되나요, 아니면 항상 다음으로 큰 정수인가요?

답변1

Epoch 이후 몇 초가 아닌 며칠이 지났습니다.

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

(그런데 기술적으로 "지금부터 365일"을 초 단위로 표현할 수 없습니다. 윤초로 인해 6개월 이후에는 날짜가 고정되지 않거나 알 수 있는 길이도 없습니다.)

답변2

소스 코드(Debian 버전의 경우)를 확인하세요.확장된정수를 사용하여 나누기24×3600이므로 잘렸습니다.

시간대 변경으로 인해 계산이 정확히 2시간 정도 지연될 수 있습니다.

관련 정보