Para fins de conformidade, é necessário buscar informações sobre a data de criação de contas locais (usuários e não usuários) em máquinas UNIX.
Existe alguma maneira (mesmo que não seja o método mais confiável ou preciso) para coletar esse tipo de informação?
Por exemplo, como alternativa, procurei a home
data de criação do diretório (para contas de usuário), mas descobri que, para sistemas compatíveis com POSIX, os registros de data e hora para criação de arquivos não estão disponíveis.
/var/log/auth.log
(você pode precisar de olhar nos logs rotacionados bem:/var/log/auth.log.1
,/var/log/auth.log.2.gz
, ...). Isso lhe dará uma pista sobre a primeira data em que a conta do usuário foi autenticada. Porém, isso não funcionará para usuários do sistema e também falhará se as contas foram criadas há mais tempo do que osyslog
período de rotação de logs do seu ./home/user
Respostas:
Se criado e não tocado desde a criação do usuário, você pode usar o
.bash_logout
arquivo para determinar a data. Como execução raiz:OU, se o usuário tiver um diretório inicial, você poderá verificar a data da última modificação do diretório:
para obter apenas a data que você pode usar
awk
:fonte
fonte
ls -ld /home/username/
fornece o tempo de modificação do diretório inicial, o que provavelmente não será útil, pois esse tempo é atualizado sempre que um arquivo é adicionado ou removido no diretório inicial.A criação da conta pode ser registrada. No Linux (se estiver usando o conjunto de utilitários de sombra comum),
useradd
faça uma entrada de log no recursoauth.info
. Esse log geralmente está localizado em/var/log/secure
ou/var/log/auth.log
(depende da distribuição).Você pode verificar seus backups
/etc/passwd
e ver qual é o backup mais jovem que não possui esta conta. Eu uso e recomendo o etckeeper para acompanhar as mudanças/etc
, porgit annotate /etc/passwd
isso me daria a resposta. (Na verdadegit annotate
, me dizia a última vez que a entrada de um usuário foi alterada; um pouco mais de escavação cuja automação está fora do escopo desta resposta me diria quando a entrada foi adicionada.)Se você não possui logs de auditoria, backups e histórico de revisões, precisará recorrer à heurística. Uma boa pista é o arquivo cujo tempo de alteração do inode (ctime) é o mais antigo. Essa heurística pode estar nos dois sentidos: se um diretório for movido para a página inicial do usuário, ele poderá conter arquivos com um ctime antigo (mas, para que eles sejam mais antigos que o usuário, seu uid não teria que ser o do usuário como uma alteração O uid envolve a atualização do ctime, para que você possa pular os arquivos que não pertencem ao usuário); por outro lado, alguns eventos podem alterar o ctime de um arquivo (por exemplo, se todo o sistema foi restaurado a partir de um backup). Você pode iniciar no diretório inicial do usuário (
ls -Alctr ~bob
| sed -n 2p), que pode conter arquivos/etc/skel
que o usuário nunca modificou (.bash_logout
é comum) e verificar se há arquivos mais antigosfind ~bob ! -cnewer ~bob/.bash_logout -user bob
. Com zsh, executels -ld ~bob/**/*(Doc[1]u:bob:)
.fonte
Verifica a data de alteração da senha.
fonte
Para usuários locais, você pode observar a hora de nascimento do diretório inicial para os sistemas e sistemas de arquivos que a registram (Linux, a maioria dos BSDs, macOS pelo menos). Como fazer isso varia com o sistema .
Para usuários em diretórios LDAP, é possível examinar os
createTimestamp
(ou possivelmentewhenCreated
) atributos de sua entrada LDAP correspondente:fonte