Como ver o que os usuários estão fazendo no Linux
Se você estiver gerenciando um servidor Linux, é bom estar preparado com uma série de comandos que você pode usar para verificar a atividade do usuário – quando o usuário está fazendo e com que frequência, em que grupos a que pertencem, quanto espaço em disco que está consumindo, o que o comando que está sendo executado, o quanto de espaço em disco que está ocupando, se eles estão lendo seus e-mails e muito mais.
neste post, veremos uma série de comandos que podem ajudá-lo a entender quem é seu usuário e como ele funciona.
dedo
um comando útil para obter um perfil de usuário é o dedo. Ele permite que você veja quem está logado ou se concentre em um único usuário para visualizar seu último login, de onde eles fizeram login, Há quanto tempo eles estão ociosos (há quanto tempo eles executaram um comando), etc. Neste comando, estamos olhando para o usuário nemo.
$ finger nemoLogin: nemo Name: Nemo DemoDirectory: /home/nemo Shell: /bin/bashOn since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6 7 minutes 47 seconds idleNew mail received Wed Jun 17 18:31 2020 (EDT) Unread since Sat Jun 13 18:03 2020 (EDT)No Plan.
podemos ver o nome completo, o diretório inicial e o shell do nemo. Também podemos ver a atividade de login e E-mail mais recente do nemo. Os números de telefone do Office, office e home só são incluídos se estiverem definidos no arquivo / etc / passwd no campo Nome Completo. Por exemplo:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
a saída acima também indica que nemo não tem um “plano”, mas isso significa apenas que ele não criou um .Planeje o arquivo e coloque algum texto nele; isso não é nada incomum.
sem argumentos, finger exibirá uma lista de logins atuais no formato mostrado abaixo. Você pode ver quando eles fizeram login, o endereço IP do qual fizeram login, o pseudo terminal em uso (por exemplo, pts/1) e por quanto tempo eles ficaram ociosos.
$ fingerLogin Name Tty Idle Login Time Office Office Phonenemo Nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6)shs Sandra Henry-Stocker pts/0 Jun 19 12:57 (192.168.0.60
w
o comando w também fornece uma lista bem formatada de usuários ativos atualmente, incluindo tempo ocioso e qual comando eles executaram mais recentemente. Ele também exibe na linha superior por quanto tempo o sistema está ativo e fornece médias de carga que indicam o quão ocupado o sistema está. Neste caso (0,00 nos últimos 1, 5 e 15 minutos), o sistema está em grande parte ocioso.
$ w 14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATshs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s wnemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash
id
com o comando id, você pode visualizar o ID numérico e o ID do grupo de um usuário junto com os grupos dos quais o Usuário é membro. Esta informação é extraída dos arquivos /etc/passwd e / etc / group. Sem argumentos, o id informa as informações da sua conta.
$ iduid=1000(shs) gid=1000(shs) groups=1000(shs),4(adm),11(admin),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),500(devops)$ id nemouid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)
auth.log
você pode arrancar informações do/var/log / auth.arquivo de log com comandos como grep. Para mostrar a atividade de login mais recente usando auth.log de dados, você pode executar um comando como este:
$ grep "New session" /var/log/auth.log | awk '{print ,,,}' | tail -5Jun 17 17:22:38 shs.Jun 17 17:58:43 gdm.Jun 17 18:09:58 shs.Jun 19 12:57:36 shs.Jun 19 12:58:44 nemo.
último
o último comando é provavelmente o melhor para olhar para logins recentes para todos os usuários ou um indivíduo. Basta lembrar que o last mostra a atividade mais recente primeiro, pois esta é a informação em que a maioria dos administradores está mais interessada.
$ last | head -5nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged inshs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)reboot system boot 5.4.0-37-generic Wed Jun 17 17:58 still runningshs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)$ last nemo | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 - 16:21 (03:22)
nemo pts/2 192.168.0.6 Sat Jun 13 17:49 - 19:05 (01:16)
nemo pts/1 192.168.0.6 Thu Jun 4 17:33 - 17:44 (00:10)
nemo pts/1 192.168.0.19 Mon May 11 19:04 - 19:57 (00:52)
nemo pts/1 192.168.0.19 Tue May 5 12:46 - 17:49 (05:02)
du
o comando du relatará quanto espaço o diretório inicial de cada usuário está usando se executado em cada diretório em / home como este:
$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole
por padrão, os tamanhos são relatados em unidades de 1024 bytes.
ps e histórico
para usuários conectados no momento, você sempre pode usar comandos como ps-ef / grep ^Nemo para ver quais comandos e processos um usuário está executando no momento. Para visualizar comandos executados anteriormente, você pode tentar examinar os arquivos de histórico dos usuários (por exemplo, .bash_history), mas observe que os usuários podem configurar suas contas para que certos comandos não sejam capturados em seus arquivos de histórico e também possam editar esses arquivos, se assim o desejarem.
contagem de inícios de sessão
Se você gostaria de ver quantas vezes cada um dos usuários tem registado desde o /var/log/wtmp arquivo que rolou, você pode usar um comando como este:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
A saída será algo parecido com isso:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
se você quiser mais detalhes, você pode colocar um script mais complexo juntos que pode adicionar algumas informações adicionais, como detalhes de login e formatação.
#!/bin/bashsepline="===================="for USER in `ls /home`do len=`echo $USER | awk '{print length()}'` # get length of username echo $USER sep="${sepline:1:$len}" # set separator echo $sep # print separator cnt=`last $USER | grep ^$USER | wc -l` # count logins echo logins: $cnt # show login count last $USER | grep ^$USER | head -5 # show most recent logins echodone
o script acima está limitando os dados mostrados aos cinco logins mais recentes, mas você pode alterar isso facilmente se quiser. Veja como os dados para um usuário seriam formatados:
shs===logins: 105shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)shs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)shs pts/0 192.168.0.25 Wed Jun 17 17:20 - 17:57 (00:36)shs pts/1 192.168.0.6 Wed Jun 17 15:19 - 17:57 (02:38)
verificando tentativas sudo
se você gostaria de ver se algum de seus usuários está tentando usar sudo quando eles não estão configurados para ter esse privilégio, você pode executar um comando como este:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
se você já tentou usar sudo em uma situação em que você não está autorizado a elevar seus privilégios e teve o sistema ameaçá-lo com “nome de usuário não está no arquivo sudoers. Este incidente será relatado, ” você pode gostar de saber que esta entrada de log é a essência desse relatório. A menos que o administrador faça um esforço para procurar transgressões sudo, eles passarão despercebidos.
Wrap-up
existem muitos comandos em sistemas Linux que podem ajudá-lo a verificar a atividade do Usuário. Espero que alguns dos apresentados neste post sejam úteis.