Pesquisa de site

Monitore a atividade dos usuários do Linux com ferramentas psacct ou acct


psacct ou acct são utilitários de código aberto para monitorar as atividades dos usuários no sistema Linux. Esses utilitários são executados em segundo plano e monitoram a atividade de cada usuário em seu sistema, bem como quais recursos estão sendo consumidos.

Eu pessoalmente usei essas ferramentas em nossa empresa, temos uma equipe de desenvolvimento onde nossos desenvolvedores trabalham continuamente nos servidores. Então, esses são os melhores utilitários para ficar de olho neles.

Esses programas fornecem uma excelente maneira de monitorar o que os usuários estão fazendo, quais comandos estão executando, quantos recursos estão sendo consumidos por eles e por quanto tempo os usuários estão ativos no sistema. Outro recurso útil é fornecer o total de recursos consumidos por serviços como Apache, MySQL, FTP, SSH, etc.

Eu acho que este é um dos grandes e mais necessários utilitários para todo administrador de sistema Linux/Unix, que deseja manter um controle das atividades dos usuários em seus servidores/sistemas.

O pacote psacct ou acct fornece vários recursos para monitorar atividades do processo.

  • O comando ac imprime as estatísticas de logins/logouts de usuários (tempo de conexão) em horas.
  • O comando lastcomm imprime as informações dos comandos executados anteriormente pelo usuário.
  • Os comandos accton são usados para ativar/desativar o processo de contabilidade.
  • O comando sa resume informações de comandos executados anteriormente.
  • Os comandos last e lastb mostram uma lista dos últimos usuários logados.

Instalando pacotes psacct ou acct no Linux

psacct e acct são pacotes semelhantes e não há muita diferença entre eles, mas o pacote psacct está disponível apenas para distribuições baseadas em rpm, como como RHEL, CentOS e Fedora, enquanto o pacote acct está disponível para distribuições como Ubuntu<, Debian e Linux Mint.

Para instalar o pacote psacct em distribuições baseadas em rpm, emita o seguinte comando yum.

yum install psacct

Para instalar o pacote acct usando o comando apt em Ubuntu/Debian/Linux Mint.

sudo apt install acct

Em outras distribuições Linux, você pode instalá-lo conforme mostrado.

sudo apk add psacct          [On Alpine Linux]
sudo pacman -S acct          [On Arch Linux]
sudo zypper install acct     [On OpenSUSE]    
Iniciando serviço psacct ou acct

Por padrão, o serviço psacct está no modo desabilitado e você precisa iniciá-lo manualmente nas distribuições baseadas em RHEL. Use o seguinte comando para verificar o status do serviço.

sudo systemctl status psacct

Você vê o status como desativado, então vamos iniciá-lo manualmente usando os seguintes comandos, que criarão um arquivo /var/account/pacct.

sudo systemctl start psacct
sudo systemctl enable psacct
sudo systemctl status psacct

No Ubuntu, Debian e Mint o serviço é iniciado automaticamente, você não precisa iniciá-lo novamente.

Exibir estatísticas do tempo de conexão dos usuários

O comando ac sem especificar nenhum argumento exibirá estatísticas totais do tempo de conexão em horas com base nos logins/logouts do usuário do arquivo wtmp atual.

ac

total     11299.15

Exibir estatísticas de usuários Linux durante o dia

Usar o comando “ac -d” imprimirá o tempo total de login em horas por dia.

ac -d

Jun 25	total        0.19
Oct 13	total       14.45
Oct 27	total      672.00
Oct 28	total       15.82
Nov  3	total        4.29
Nov  5	total       10.13
Dec  7	total       14.04
Dec 10	total       23.60
Dec 27	total      808.93
Jan  3	total       12.31
Mar  3	total     1438.67
Jul 22	total     6767.81
Today	total     1517.09

Exibir o tempo total de login de todos os usuários Linux

Usar o comando “ac -p” imprimirá o tempo total de login de cada usuário Linux em horas.

ac -p

	rockylinux                         425.61
	tecmint                            702.29
	root                             10171.54
	total    11299.44

Exibir tempo de login do usuário Linux

Para obter o tempo total de estatísticas de login do usuário “tecmint” em horas, use o comando as.

ac tecmint
 total      702.29

Exibir horário de login diário do usuário

O comando a seguir imprimirá o tempo total de login diário do usuário “tecmint” em horas.

ac -d tecmint
Oct 11  total        8.01
Oct 12  total       24.00
Oct 15  total       70.50
Oct 16  total       23.57
Oct 17  total       24.00
Oct 18  total       18.70
Nov 20  total        0.18

Imprimir todos os comandos do Linux executados pelos usuários

O comando “sa” é utilizado para imprimir o resumo dos comandos que foram executados pelos usuários.

sa
       2       9.86re       0.00cp     2466k   sshd*
       8       1.05re       0.00cp     1064k   man
       2      10.08re       0.00cp     2562k   sshd
      12       0.00re       0.00cp     1298k   psacct
       2       0.00re       0.00cp     1575k   troff
      14       0.00re       0.00cp      503k   ac
      10       0.00re       0.00cp     1264k   psacct*
      10       0.00re       0.00cp      466k   consoletype
       9       0.00re       0.00cp      509k   sa
       8       0.02re       0.00cp      769k   udisks-helper-a
       6       0.00re       0.00cp     1057k   touch
       6       0.00re       0.00cp      592k   gzip
       6       0.00re       0.00cp      465k   accton
       4       1.05re       0.00cp     1264k   sh*
       4       0.00re       0.00cp     1264k   nroff*
       2       1.05re       0.00cp     1264k   sh
       2       1.05re       0.00cp     1120k   less
       2       0.00re       0.00cp     1346k   groff
       2       0.00re       0.00cp     1383k   grotty
       2       0.00re       0.00cp     1053k   mktemp
       2       0.00re       0.00cp     1030k   iconv
       2       0.00re       0.00cp     1023k   rm
       2       0.00re       0.00cp     1020k   cat
       2       0.00re       0.00cp     1018k   locale
       2       0.00re       0.00cp      802k   gtbl

Explicação da saída do comando acima:

  • 9,86re é um “tempo real” conforme os minutos do relógio de parede
  • 0,01cp é a soma do tempo do sistema/usuário em minutos de CPU
  • 2466k é uma média de uso do núcleo em tempo de CPU, ou seja, 1k unidades
  • nome do comando sshd

Imprimir informações do usuário Linux

Para obter as informações de um usuário individual, utilize as opções -u.

sa -u
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch

Imprimir número de processos Linux

Este comando imprime o número total de processos e minutos de CPU. Se você observar um aumento contínuo nesses números, é hora de analisar o sistema para saber o que está acontecendo.

sa -m
sshd                                    2       9.86re       0.00cp     2466k
root                                  127      14.29re       0.00cp      909k

Imprimir e classificar o uso por porcentagem

O comando “sa -c” exibe a maior porcentagem de usuários.

sa -c
 132  100.00%      24.16re  100.00%       0.01cp  100.00%      923k
       2    1.52%       9.86re   40.83%       0.00cp   53.33%     2466k   sshd*
       8    6.06%       1.05re    4.34%       0.00cp   20.00%     1064k   man
       2    1.52%      10.08re   41.73%       0.00cp   13.33%     2562k   sshd
      12    9.09%       0.00re    0.01%       0.00cp    6.67%     1298k   psacct
       2    1.52%       0.00re    0.00%       0.00cp    6.67%     1575k   troff
      18   13.64%       0.00re    0.00%       0.00cp    0.00%      509k   sa
      14   10.61%       0.00re    0.00%       0.00cp    0.00%      503k   ac
      10    7.58%       0.00re    0.00%       0.00cp    0.00%     1264k   psacct*
      10    7.58%       0.00re    0.00%       0.00cp    0.00%      466k   consoletype
       8    6.06%       0.02re    0.07%       0.00cp    0.00%      769k   udisks-helper-a
       6    4.55%       0.00re    0.00%       0.00cp    0.00%     1057k   touch
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      592k   gzip
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      465k   accton
       4    3.03%       1.05re    4.34%       0.00cp    0.00%     1264k   sh*
       4    3.03%       0.00re    0.00%       0.00cp    0.00%     1264k   nroff*
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1264k   sh
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1120k   less
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1346k   groff
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1383k   grotty
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1053k   mktemp

Listar os últimos comandos executados do usuário

O comando ‘latcomm‘ é usado para pesquisar e exibir informações de comandos do usuário executados anteriormente. Você também pode pesquisar comandos de nomes de usuário individuais. Por exemplo, vemos comandos do usuário (tecmint).

lastcomm tecmint
su                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
dircolors               tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tput                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tty                     tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56

Registros de pesquisa para comandos

Com a ajuda do comando lastcomm, você poderá visualizar o uso individual de cada comando.

lastcomm ls
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56

Para mais informações e uso, verifique as páginas de manual dessas ferramentas.