[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Calcular paramertros de contraseña Timestamp /etc/shadow



El mié, 09-07-2008 a las 11:29 -0400, andres sarmiento escribió:
> El día 9 de julio de 2008 11:19, Abraham Pérez <jockah@gmail.com> escribió:
> > 2008/7/9, andres sarmiento <coolpixgnu@gmail.com>:
> >>
> >> Estimados:
> >> Tengo una duda acerca de como calcular algunos parámetros relacionados
> >> con las contraseñas del  archivo /etc/shadow.
> >> He buscado documentación y no he encontrado la manera de calcular
> >> manualmente dichos parámetros para sistemas linux.
> >> A continuación adjunto lo que he encontrado:
> >>
> >> ejemplo:
> >>
> >> cuenta-test:$1$DORWlFmM$4yhE.0olwWtHxFN5o/AR7.:13969:0:60:9:::
> >>          1                                       2
> >>               3    4  5   6 7 8
> >>
> >> 1.      User name : It is your login name
> >> 2.      Password: It your encrypted password. The password should be
> >> minimum 6-8 characters long including special characters/digits
> >> 3.      Last password change (lastchanged): Days since Jan 1, 1970 that
> >> password was last changed
> >> 4.      Minimum: The minimum number of days required between password
> >> changes i.e. the number of days left before the user is allowed to
> >> change his/her password
> >> 5.      Maximum: The maximum number of days the password is valid (after
> >> that user is forced to change his/her password)
> >> 6.      Warn : The number of days before password is to expire that user
> >> is
> >> warned that his/her password must be changed
> >> 7.      Inactive : The number of days after password expires that account
> >> is disabled
> >> 8.      Expire : days since Jan 1, 1970 that account is disabled i.e. an
> >> absolute date specifying when the login may no longer be used
> >>
> >> Me gustaría poder calcular manualmente desde el punto 3 hacia adelante.
> >>
> >> He probado con el comando $chage -l <nombre_usuario> y me entrega
> >> dicha información procesada para 1 usuario, pero necesito poder
> >> calcularla manualmente para muchos usuarios.
> >> También he probado con el comando $date -d @timestamp y me arroja
> >> algunos minutos algunas horas pero siempre en 1/1/1970.
> >>
> >> Bueno amigos gracias por leer.
> >>
> >> Saludos Cordiales
> >>


Tirando un poco de python:

########################################################
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import time
import sys


try:
    f=open('/etc/shadow','r')
    data=f.readlines()
    f.close()
except:
    print "Can't read /etc/shadow, exec by root, please!!"
    sys.exit(1)

for line in data:
    user=line.strip().split(':')
    #print user
    if user[1] == '*' or user[1] == '!':
        #print "User %s locked or with no pass"%user[0]
        continue
    print "User %s change passwd at '%s'" \
          %(user[0], time.ctime(int(user[2])*60*60*24)  )

###############################################################

el último print te calcula la fecha (no los días) en la que la
contraseña se cambió...

sólo tienes que cambiar user[2] (lo que sería tu campo 3) para leer y
hacer operaciones con el resto de campos.

Saludos
-- 
http://soleup.eup.uva.es/mariodebian

Attachment: signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente


Reply to: