Gennaio 29, 2022

Come vedere ciò che gli utenti di Linux

Se si tratti di gestire un server Linux, è bene essere pronti con una serie di comandi che è possibile utilizzare per controllare l’attività dell’utente – quando gli utenti accedono e come spesso, quali sono i gruppi a cui appartengono, quanto spazio su disco sta consumando, il comando che si sta eseguendo, quanto spazio su disco sta occupando, se stai leggendo il messaggio e di più.

In questo post, esamineremo una serie di comandi che possono aiutarti a capire chi sono i tuoi utenti e come funzionano.

finger

Un pratico comando per ottenere un profilo utente è finger. Ti permette di vedere chi ha effettuato l’accesso o concentrarsi su un singolo utente per visualizzare il loro ultimo accesso, da dove hanno effettuato l’accesso, per quanto tempo sono stati inattivi (da quanto tempo hanno eseguito un comando), ecc. In questo comando, stiamo guardando l’utente 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.

Possiamo vedere il nome completo di nemo, la home directory e la shell. Possiamo anche vedere l’attività di login ed e-mail più recente di nemo. I numeri di telefono dell’ufficio, dell’ufficio e della casa sono inclusi solo se sono definiti nel file/etc / passwd nel campo nome completo. Ad esempio:

nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).

L’output sopra indica anche che nemo non ha un “piano”, ma questo significa solo che non ha creato un .pianifica il file e inserisci del testo; questo non è affatto insolito.

Senza argomenti, finger visualizzerà un elenco di accessi correnti nel formato mostrato di seguito. Puoi vedere quando hanno effettuato l’accesso, l’indirizzo IP da cui hanno effettuato l’accesso, lo pseudo terminale in uso (ad esempio, pts/1) e per quanto tempo sono stati inattivi.

$ 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

Il comando w fornisce anche un elenco ben formattato di utenti attualmente attivi, incluso il tempo di inattività e quale comando hanno eseguito più di recente. Visualizza anche nella riga superiore per quanto tempo il sistema è stato attivo e fornisce medie di carico che indicano quanto è occupato il sistema. In questo caso (0,00 per gli ultimi 1, 5 e 15 minuti), il sistema è in gran parte inattivo.

$ 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

Con il comando id, è possibile visualizzare l’ID numerico di un utente e l’ID di gruppo insieme ai gruppi di cui l’utente è membro. Questa informazione viene estratta dai file/etc /passwd e/etc / group. Senza argomenti, id riporta le informazioni per il tuo account.

$ 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

È possibile estrarre informazioni da /var/log/auth.file di registro con comandi come grep. Per mostrare l’attività di accesso più recente utilizzando auth.log data, è possibile eseguire un comando come questo:

$ 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.

ultimo

L’ultimo comando è probabilmente il migliore per guardare gli accessi recenti per tutti gli utenti o un individuo. Basta ricordare che last mostra prima l’attività più recente poiché questa è l’informazione a cui la maggior parte degli amministratori è più interessata.

$ 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

Il comando du riporterà quanto spazio sta usando la directory home di ogni utente se eseguito contro ogni directory in /home in questo modo:

$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole

Per impostazione predefinita, le dimensioni sono riportate in unità di 1024 byte.

ps e cronologia

Per gli utenti attualmente connessi, è sempre possibile utilizzare comandi come ps-ef | grep ^nemo per vedere quali comandi e processi un utente è attualmente in esecuzione. Per visualizzare i comandi eseguiti in precedenza, puoi provare a esaminare i file di cronologia degli utenti (ad esempio,.bash_history), ma nota che gli utenti possono impostare i loro account in modo che determinati comandi non vengano catturati nei loro file di cronologia e possono anche modificare questi file se lo desiderano.

conteggio degli accessi

Se si desidera visualizzare quante volte ciascuno dei propri utenti ha effettuato l’accesso dall’ultimo rollover del file / var / log / wtmp, è possibile utilizzare un comando come questo:

$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done

L’output sarà simile a questo:

dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0

Se vuoi maggiori dettagli, puoi mettere insieme uno script più complesso che può aggiungere alcune informazioni aggiuntive come i dettagli di accesso e la formattazione.

#!/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

Lo script sopra sta limitando i dati mostrati ai cinque accessi più recenti, ma puoi facilmente modificarli se lo desideri. Ecco come verranno formattati i dati per un utente:

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)

verifica dei tentativi sudo

Se vuoi vedere se qualcuno dei tuoi utenti sta tentando di utilizzare sudo quando non è impostato per avere questo privilegio, puoi eseguire un comando come questo:

$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo

Se hai mai provato a usare sudo in una situazione in cui non sei autorizzato ad elevare i tuoi privilegi e il sistema ti ha minacciato con “nome utente non è nel file sudoers. Questo incidente verrà segnalato, ” si potrebbe godere sapendo che questa voce di registro è l’essenza di quel rapporto. A meno che l’amministratore non faccia uno sforzo per cercare le trasgressioni sudo, passeranno inosservate.

Wrap-up

Ci sono molti comandi su sistemi Linux che possono aiutarti a controllare l’attività dell’utente. Spero che alcuni di quelli presentati in questo post si rivelerà utile.

Come usare il comando bmon: 2-Minute Linux Tips

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.