Para fines de cumplimiento, es necesario obtener información sobre la fecha de creación de cuentas locales (de usuarios y no usuarios) en máquinas UNIX.
¿Hay alguna forma (incluso si no es el método más confiable o preciso) para recopilar ese tipo de información?
Por ejemplo, como alternativa, busqué la home
fecha de creación del directorio (para cuentas de usuario), pero descubrí que para los sistemas compatibles con POSIX, las marcas de tiempo para la creación de archivos no están disponibles.
/var/log/auth.log
(puede que tenga que buscar en los registros alternos así:/var/log/auth.log.1
,/var/log/auth.log.2.gz
, ...). Esto le dará una pista sobre la primera fecha de autenticación de la cuenta de usuario. Sin embargo, esto no funcionará para los usuarios del sistema y también fallará si las cuentas se crearon hace más tiempo que elsyslog
período de rotación de registros de su cuenta./home/user
Respuestas:
Si se creó y no se tocó desde la creación del usuario, puede usar el
.bash_logout
archivo para determinar la fecha. Como ejecución raíz:O, si el usuario tiene un directorio de inicio, puede verificar la última fecha de modificación de ese directorio:
para obtener solo la fecha que puede usar
awk
:fuente
fuente
ls -ld /home/username/
proporciona el tiempo de modificación del directorio de inicio, que probablemente no sea útil dado que este tiempo se actualiza cada vez que se agrega o elimina un archivo en el directorio de inicio.La creación de la cuenta puede ser registrada. En Linux (si usa el conjunto de utilidades de sombra común),
useradd
realiza una entrada de registro en la instalaciónauth.info
. Este registro generalmente se encuentra en/var/log/secure
o/var/log/auth.log
(depende de la distribución).Puede verificar sus copias de seguridad
/etc/passwd
y ver cuál es la copia de seguridad más joven que no tiene esta cuenta. Utilizo y recomiendo etckeeper para realizar un seguimiento de los cambios/etc
, porgit annotate /etc/passwd
lo que me daría la respuesta. (En realidadgit annotate
, me diría la última vez que se modificó la entrada de un usuario; un poco más de excavación cuya automatización está fuera del alcance de esta respuesta me diría cuándo se agregó la entrada).Si carece de registros de auditoría, copias de seguridad e historial de revisiones, deberá recurrir a la heurística. Una buena pista es el archivo cuyo tiempo de cambio de inodo (ctime) es el más antiguo. Esta heurística puede encontrarse en ambos sentidos: si un directorio se mueve a la página de inicio del usuario, puede contener archivos con un ctime antiguo (pero para que sean más antiguos que el usuario, su UID no debería ser el del usuario como un cambio de uid implica actualizar el ctime, por lo que puede omitir aquellos archivos que no son propiedad del usuario); por el contrario, algunos eventos pueden cambiar el ctime de un archivo (por ejemplo, si todo el sistema se restauró desde una copia de seguridad). Puede comenzar desde el directorio de inicio del usuario (
ls -Alctr ~bob
| sed -n 2p), que puede contener archivos/etc/skel
que el usuario nunca ha modificado (.bash_logout
es común), y ver si hay archivos más antiguosfind ~bob ! -cnewer ~bob/.bash_logout -user bob
. Con zsh, correls -ld ~bob/**/*(Doc[1]u:bob:)
.fuente
Comprueba la fecha de cambio de contraseña.
fuente
Para los usuarios locales, puede consultar el tiempo de nacimiento de su directorio principal para aquellos sistemas y sistemas de archivos que lo registran (Linux, la mayoría de los BSD, macOS al menos). Cómo hacerlo varía con el sistema .
Para los usuarios en directorios LDAP, puede ver los atributos
createTimestamp
(o posiblementewhenCreated
) de su entrada LDAP correspondiente:fuente