Linux - Como saber quais arquivos são originados no login?

7

Quando um usuário específico efetua login em uma máquina Linux, determinados arquivos são originados, como talvez .bashrc, .bash_profile, etc ... Às vezes, shells diferentes significam que arquivos diferentes são originados. E, claro, o usuário pode ter algo configurado para obter certos arquivos personalizados.

Minha pergunta: Existe uma maneira de o root / su determinar uma lista de todos os arquivos originados de um determinado usuário quando eles fazem o login?

    
por Jake Wilson 03.06.2011 / 15:46

3 respostas

7

inotifywatch pode ajudar. Embalado em inotify-tools. Use como usuário de arquivos / dir para o diretório home que está sendo observado, não o sudo, ou você receberá erros no .gvfs se estiver executando um gnome mais novo.

O

inotify só lhe dirá quais arquivos são acessados / criados / modificados / excluídos.

$ inotifywatch -r /home/username/.* /home/username/*
Establishing watches...

em outro terminal

$ cat /home/username/.bashrc 

no terminal inotifywatch ctrl-c para terminar

Finished establishing watches, now collecting statistics.
total  access  modify  close_nowrite  open  filename
3      1       0       1              1     /home/username/.bashrc

Para sua solicitação específica, todos os arquivos acessados durante o login.

$ inotifywatch -r /home/username/.* /home/username/*
Establishing watches...

em outro terminal

$ sudo su
# login username

no terminal inotifywatch ctrl-c para terminar

Você pode redirecionar o inotifywatch para um arquivo se estiver usando uma área de trabalho gorda como o gnome ou o kde. Ou aumente sua rolagem no terminal inotifywatch. No gnome 3, milhares de arquivos homedir são acessados durante o login. Você provavelmente desejará excluir diretórios ou fazer uma lista específica de diretório / arquivo para assistir.

    
por 03.06.2011 / 18:05
0

Uma maneira, bastante ineficiente, é inicializar o computador, fazer a pessoa efetuar login. Em seguida, monte a unidade com noatime para que o tempo de acesso não seja mais atualizado e, em seguida, use find para descarregar uma lista de arquivos acessados no período em que o usuário efetuou login.

    
por 03.06.2011 / 17:09
0

Você pode adicionar código adicional a cada dotfile, por exemplo:

.bashrc

if [ ! -z "$PS1" ]; then # Determine whether Bash is running interactively or not.
  echo $(basename $BASH_SOURCE) loaded.
fi

e semelhante para .bash_profile , .bash_aliases , .profile , etc.

Quando você fizer login, verá quais arquivos foram carregados e qual foi a ordem exata. Se você não quiser imprimir nada na tela (por exemplo, para os usuários), registre-o no arquivo. No exemplo:

echo # $(basename $BASH_SOURCE) loaded for $USER. >> ~/.bash_history

Você pode verificar a solução acima em meus arquivos de ponto .

    
por 29.10.2014 / 11:59

Tags