Search code examples
unixunix-timestampepoch

understanding epoch time to calculate password ageing in unix


my_current_epoch=15684 equivalent time stamp is  Thu, 01 Jan 1970 04:21:24
last_password_reset_epoch_time=15547 equivalent time stamp is Thu, 01 Jan 1970 04:19:07

I am not able to understand how difference of these two will give the days since last password reset.

As per my understanding epoch time is denoted in seconds that has elapsed since Jan 1,1970

Can someone please help me understanding this.


Solution

  • man 5 shadow on a Linux box says:

    The date of the last password change is given as the number of days since Jan 1, 1970. The password may not be changed again until the proper number of days have passed, and must be changed after the maximum number of days. If the minimum number of days required is greater than the maximum number of day allowed, this password may not be changed by the user.

    So, you can find out to within 24 hours when a password was changed by multiplying the value from /etc/shadow by 86400 (the number of seconds in a day — but you didn't need me to tell you that, did you?).

    For the values given (bc to the rescue):

    • 15684*86400 = 1355097600
    • 15547*86400 = 1343260800

    And:

    $ timestamp -u 1355097600 1343260800
    1355097600 = Mon Dec 10 00:00:00 2012
    1343260800 = Thu Jul 26 00:00:00 2012
    $
    

    Timestamp is my program; modern versions of date can handle this too. The -u means 'report in UTC (aka GMT)' rather than in my time zone.